diff options
author | Iru Cai <mytbk920423@gmail.com> | 2018-04-16 19:06:32 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2018-04-16 19:06:32 +0800 |
commit | ad4e2420e822b8a115aac6124307b89447578782 (patch) | |
tree | 6f4db875081597e2e64dd4221a97bbff25503dcc /1.3/palsquare.c | |
parent | a7721767628a51b752ad3a96eb334734241dcd8b (diff) | |
download | usaco-ad4e2420e822b8a115aac6124307b89447578782.tar.xz |
1.2~1.5
Diffstat (limited to '1.3/palsquare.c')
-rw-r--r-- | 1.3/palsquare.c | 56 |
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; +} + |