Palindromic Squares 迴文平方數
阿新 • • 發佈:2018-12-09
Description
迴文數是指從左向右念和從右向左念都一樣的數。如12321就是一個典型的迴文數。 給定一個進位制B(2<=B<=20,由十進位制表示),輸出所有的大於等於1小於等於300(十進位制下)且它的平方用B進製表示時是迴文數的數。用’A’,’B’……表示10,11等等。
Input
共一行,一個單獨的整數B(B用十進位制表示)。
Output
每行兩個B進位制的符合要求的數字,第二個數是第一個數的平方,且第二個數是迴文數。
Sample Input
10
Sample Output
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 <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <vector> #include <string> #include <cmath> #include <stack> #include <queue> #include <map> #define MAXN 0x3f3f3f3f using namespace std; typedef long long LL; int main() { int n,a[100],b[100]; cin >> n; for(int i=1; i<=300; i++) { int m=i*i,j=0,t=1,p,o; while(t!=0) { t=m/n; a[j++]=m%n; m=t; } t=1,p=i,o=0; while(t!=0) { t=p/n; b[o++]=p%n; p=t; } int flag = 0; for(int i=0; i<j/2; i++) { if(a[i]!=a[j-i-1]) flag = 1; } if(!flag) { for(int i=o-1;i>=0;i--) { if(b[i]>=10) printf("%c",b[i]+55); else cout << b[i]; } cout << " " ; for(int i=0;i<j;i++) { if(a[i]>=10) printf("%c",a[i]+55); else cout << a[i]; } cout << endl; } } return 0; }