标签:
我会告诉你进制转换我都忘了,翻出了数字逻辑课本才想起来的。
/* ID: modengd1 PROG: palsquare LANG: C++ */ #include <iostream> #include <stdio.h> #include <string.h> #include <stack> using namespace std; char leter[20]={‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘,‘G‘,‘H‘,‘I‘,‘J‘}; //进制转换,将x转化为base进制的数的字符串表示形式存入out数组 void changetheBase(int x,int base,char out[60]) { stack<char> S; int i=0; while(x>0) { S.push(leter[x%base]); x/=base; } for(i=0;!S.empty();i++) { out[i]=S.top(); S.pop(); } out[i]=0; } //检测一个以‘\0‘结尾的字符串是不是回文串 bool isPalindromic(char input[60]) { int temp[60]; int len=strlen(input); for(int i=0;i<len;i++) { temp[len-i-1]=input[i]; } for(int i=0;i<len;i++) { if(input[i]!=temp[i]) return false; } return true; } int main() { freopen("palsquare.in","r",stdin); freopen("palsquare.out","w",stdout); int square[301],base; scanf("%d",&base); for(int i=1;i<=300;i++) { char out1[60],out2[60]; changetheBase(i,base,out1); changetheBase(i*i,base,out2); if(isPalindromic(out2)) { cout<<out1<<‘ ‘<<out2<<endl; } } return 0; }
标签:
原文地址:http://www.cnblogs.com/modengdubai/p/4761709.html