[USACO1.2]迴文平方數 Palindromic Squares
阿新 • • 發佈:2018-12-13
大意
判斷在進位制下小於400的平方是迴文數的個數
思路
不要列舉迴文數,我們可以從平方下手,這樣節省了大量時間
程式碼
/*
ID:hzbismy1
LANG:C++
TASK:palsquare
*/
#include<cstdio>
using namespace std;int n,k,a[1001],j,len,b[1001];
inline bool check(){for(register int i=1;(i<<1)<=j;i++) if(a[i]!=a[j-i+1]) return false;return true;}//判斷是否迴文
signed main ()
{
freopen("palsquare.in","r",stdin);
freopen("palsquare.out","w",stdout);
scanf("%d",&n);
for(register int i=1;i<=300;i++)
{
k=i*i;j=len=0;
while(k) a[++j]=k%n,k/=n;
if(!check()) continue;
k=i;
while(k) b[++len]=k%n,k/=n;
for(register int l=len;l>0;l--) putchar(b[l]>9?b[l] +55:b[l]+48);putchar(32);//輸出,記得要倒序
for(register int l=1;l<=j;l++) putchar(a[l]>9?a[l]+55:a[l]+48);putchar(10);//輸出,因為是迴文數,倒不倒序無所謂
}
}