题解 P1206 【[USACO1.2]回文平方数 Palindromic Squares】

Creeper_LKF

2017-07-03 14:53:30

Solution

###一开始不知道处理A、B、C,然后又看了看题... ```cpp #include<bits/stdc++.h> using namespace std; int n;//要求用ABCD来表示10、11、12.。。。。。。 inline string change(int decs){//输入十进制数 string x; x.clear(); stack<short> ns;//翻转一下结果 while(decs){ ns.push(decs%n); decs/=n; } short ws=ns.size(); for(short i=1;i<=ws;i++){ short y=ns.top(); ns.pop(); if(y<10) x+=(y+'0'); else x+=(y-10+'A');//方便直接输出 } return x; } inline bool check(const string &x){//加上const和&更保险 short i=0,j=x.size()-1; while(i<j) if(x[i++]!=x[j--]) return false;//判断回文 return true; } int main (){ scanf("%d",&n); for(int i=1;i<=300;i++){ int inp=i*i;//直接算平方 string outp=change(inp);//转换 if(check(outp))//检查 cout<<change(i)<<" "<<outp<<endl; } return 0; } ```