USACO之Section1.2.4 Palindromic Squares[回文数][进制转换]

来源:互联网 发布:骆家辉 杨澜 张欣 知乎 编辑:程序博客网 时间:2024/05/19 15:21

【题解】输入一个B表示B进制,(2<=B<=20),输出所有的大于等于1小于等于300(十进制下)且它的平方用B进制表示时是回文数。
【输入】一个整数
【输出】1-300中的数(在B进制下)以及它的平方数(在B进制下),平方数是回文数。
代码如下:

/*    ID:m1519591    PROG:palsquare    LANG:C++*/#include<iostream>#include<fstream>using namespace std;char str[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J'};//B最大为20进制。 int xx;int n;char ans[25];string sum="";string sum1="",sum2="";bool solve(int x){    bool flag=false;    sum="";    sum1="";    sum2="";    xx=x*x;    int t=0;    while(x)    {        t=x%n;        sum=str[t]+sum;        x/=n;    }    while(xx)    {        t=xx%n;        sum1=sum1+str[t];        sum2=str[t]+sum2;        xx/=n;     }     char tmp=sum1[0];    if(sum1==sum2&&tmp!='0')    flag=true;    return flag;}int main(){    ofstream cout("palsquare.out");    ifstream cin("palsquare.in");    cin>>n;    for(int i=1;i<=300;i++)    {        if(solve(i))        cout<<sum<<" "<<sum1<<endl;    }    return 0;}
原创粉丝点击