USACO Section 1.2 Palindromic Squares

来源:互联网 发布:记单词的软件 编辑:程序博客网 时间:2024/05/16 08:22

这题就是简单的把从1到300的数用给定B进制表示一下,再把他的平方也表示一下,如果平方的B进制表示是回文数的话,就输出这个数还有他的平方的B进制表示。
代码如下:

/*ID: 13913351LANG: CTASK:palsquare*/#include<stdio.h>#include<string.h>char num[21]={"0123456789ABCDEFGHIJ"};void shift(int m,int n,char res[32]){    int k=0;    while(n!=0)    {        res[k++]=num[n%m];        n/=m;    }     res[k]='\0';} int main(){    FILE *fin  = fopen ("palsquare.in", "r");    FILE *fout = fopen ("palsquare.out", "w");    int m;    fscanf(fin,"%d",&m);    char x[32],res[32];    int i,j;    for(i=1;i<=300;i++)    {    //  printf("%d\n",i);        shift(m,i,x);        shift(m,i*i,res);        for(j=0;j<strlen(x)/2;j++)        {            char ch;            ch=x[j];            x[j]=x[strlen(x)-1-j];            x[strlen(x)-1-j]=ch;        }        for(j=0;j<strlen(res)/2;j++)        {            if(res[j]!=res[strlen(res)-j-1])            {                break;            }        }        if(j>=strlen(res)/2)        {            fprintf(fout,"%s %s\n",x,res);        }    }    return 0;} 

祝大家学习愉快哦!!

原创粉丝点击