迴文平方數
阿新 • • 發佈:2018-12-30
給定一個進位制B(2<=B<=20,由十進位制表示),輸出所有的大於等於1小於等於300(十進位制下)且它的平方用B進製表示時是迴文數的數。用’A’,’B’……表示10,11等等
輸入樣例
10
輸出樣例
1 1
2 4
3 9
11 121
22 484
26 676
101 10201
111 12321
121 14641
202 40804
212 44944
264 69696
#include <bits/stdc++.h> using namespace std; long long t=0; long long tt,g,n,y,z=1e9,ans,a[2001],b[2001]; char c[22]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L'};//初始化 int main() { cin>>n; long long i,y; while (t<=300) { string s,ss; t++;//記錄原數 tt=t*t;//平方數 y=0; i=2000; while (tt>0) { a[i]=tt%n; tt/=n; i--; }//將tt轉化為進位制 z=i+1; for (i=z;i<=2000;i++) { s+=c[a[i]]; } for ( i=s.size()-1;i>=0;i--) { ss+=s[i]; } if (s==ss)//如果是迴文數 { tt=t;//防止影響原變數 i=2000; while (tt>0) { a[i]=tt%n; tt/=n; i--; }//將t轉化為n進位制 z=i+1; ss=""; for (i=z;i<=2000;i++) { ss+=c[a[i]]; } cout<<ss<<" "<<s<<endl; } } }
需要耐心,慢慢做,你就能成功!