summaryrefslogtreecommitdiff
path: root/1.3/palsquare.c
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2018-04-16 19:06:32 +0800
committerIru Cai <mytbk920423@gmail.com>2018-04-16 19:06:32 +0800
commitad4e2420e822b8a115aac6124307b89447578782 (patch)
tree6f4db875081597e2e64dd4221a97bbff25503dcc /1.3/palsquare.c
parenta7721767628a51b752ad3a96eb334734241dcd8b (diff)
downloadusaco-ad4e2420e822b8a115aac6124307b89447578782.tar.xz
1.2~1.5
Diffstat (limited to '1.3/palsquare.c')
-rw-r--r--1.3/palsquare.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/1.3/palsquare.c b/1.3/palsquare.c
new file mode 100644
index 0000000..47f7593
--- /dev/null
+++ b/1.3/palsquare.c
@@ -0,0 +1,56 @@
+/*
+ID: mytbk921
+LANG: C
+TASK: palsquare
+*/
+
+#include <stdio.h>
+
+const char numMap[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+int convert(int x,int base,int dest[])
+ //convert integer x to an array,return the length
+{
+ int i=0;
+ while (x){
+ dest[i++]=x%base;
+ x/=base;
+ }
+ return i;
+}
+
+int isReverse(int a[],int len) //check is an array is pan
+{
+ int i;
+ for (i=0;i<len/2;i++){
+ if (a[i]!=a[len-1-i])
+ return 0;
+ }
+ return 1;
+}
+
+int main()
+{
+ int i,j;
+ int base;
+ int origNum[32],aNum[32],origLen,len;
+ FILE *fin=fopen("palsquare.in","r");
+ FILE *fout=fopen("palsquare.out","w");
+ fscanf(fin,"%d",&base);
+ fclose(fin);
+ for (i=1;i<=300;i++){
+ len=convert(i*i,base,aNum);
+ if (isReverse(aNum,len)){
+ origLen=convert(i,base,origNum); //used to print i
+ for (j=origLen-1;j>=0;j--)
+ fprintf(fout,"%c",numMap[origNum[j]]);
+ fputc(' ',fout);
+ for (j=len-1;j>=0;j--) //print i*i
+ fprintf(fout,"%c",numMap[aNum[j]]);
+ fputc('\n',fout);
+ }
+ }
+ fclose(fout);
+ return 0;
+}
+