給出進制N(2<=N<=20),求1至300範圍內其平方表示成N進制後爲迴文數的全部數字,輸出這些數字和對應的平方迴文。ios
問題很簡單,直接對1至300範圍內的每一個數平方,而後用除k取餘法求其k進製表示,判斷是否爲迴文,是的話則輸入該數及其平方。spa
/* ID: whutzha1 PROG: palsquare LANG: C++ */ //#include<iostream> #include<fstream> using namespace std; ifstream cin("palsquare.in"); ofstream cout("palsquare.out"); int main() { int b; cin>>b; int i,j1,j2,k; int arr1[20]; int arr2[20]; for (i=1;i<=300;i++) { k=i*i; j1=-1; while(k) { j1++; arr1[j1]=k%b; k=k/b; } bool flag=true; for (k=0;k<=j1/2;k++) { if (arr1[k]!=arr1[j1-k]) { flag=false; break; } } if (flag) { k=i; j2=-1; while(k) { j2++; arr2[j2]=k%b; k=k/b; } for(k=j2;k>=0;k--) { if(arr2[k]<10) cout<<arr2[k]; else cout<<(char)(arr2[k]+55); } cout<<" "; for(k=0;k<=j1;k++) { if(arr1[k]<10) cout<<arr1[k]; else cout<<(char)(arr1[k]+55); } cout<<endl; } } return 0; }