1. 程式人生 > >[USACO1.2]迴文平方數 Palindromic Squares

[USACO1.2]迴文平方數 Palindromic Squares

大意

判斷在nn進位制下小於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);//輸出,因為是迴文數,倒不倒序無所謂 } }