/* PROB:palsquare LANG:C++ */ #include<iostream> #include<fstream> #include<sstream> #include<string> #include<stack> #include<math.h> using namespace std; const int code[]={10,11,12,13,14,15,16,17,18,19}; stack<char> rem_stack; //十进制转换成n进制 string transtoN(int num_ten,int base){ string str_n=""; int irem=0; char crem=' '; while(num_ten!=0){ irem=num_ten%base; if(irem<10) crem=(char)(irem+48); else crem=irem-10+'A'; rem_stack.push(crem); num_ten=num_ten/base; } while(!rem_stack.empty()){ str_n.append(1,rem_stack.top()); rem_stack.pop(); } return str_n; } int main(){ ifstream fin("palsquare.in"); ofstream fout("palsquare.out"); int base; fin>>base; string str_n=""; int i_pals=0; string str_pals=""; bool ispals=true; int before_pals=1; fout<<1<<" "<<1<<endl; for(int i=2;i<=300;i++){ stringstream ss; str_pals=""; i_pals=before_pals+2*i-1;//n^2=(n-1)^2+2*n-1。。用n-1的平方计算n的平方 if(base!=10){ str_n=transtoN(i,base); str_pals=transtoN(i_pals,base); } else{ ss<<i_pals; str_pals=ss.str(); } for(int j=0;j<str_pals.size()/2;j++){ if(str_pals[j]!=str_pals[str_pals.size()-1-j]){ ispals=false; break; } } if(ispals){ if(base==10) fout<<i<<" "<<str_pals<<endl; else fout<<str_n<<" "<<str_pals<<endl; } before_pals=i_pals; ispals=true; } return 0; }