dualpal解题报告 —— icedream61 博客园(转载请注明出处)
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
  给出N和S,找出大于S的前N个双回文数。
  双回文数定义:在二进制至十进制中的两种(或两种以上)进制下是回文数。
【数据范围】
  1<=N<=15
  0<S<10000
  本题不需要使用大于4字节的整型变量
【输入样例】
  3 25
【输出样例】
  26
  27
  28
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
  没难度。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】
  很可惜,又不是一遍AC。(在main中,“--N”一句忘了写了。)

------------------------------------------------------------------------------------------------------------------------------------------------

【代码】

 /*
ID: icedrea1
PROB: dualpal
LANG: C++
*/ #include <iostream>
#include <fstream>
using namespace std; int N,S; char to(int x) { return x-+''; }
string change(int x,int B)
{
string num;
while(x) { num=to(x%B)+num; x/=B; }
return num;
}
bool isPal(string num)
{
for(int i=;i!=num.size();++i)
if(num[i]!=num[num.size()--i]) return false;
return true;
} int main()
{
ifstream in("dualpal.in");
ofstream out("dualpal.out"); int cnt;
in>>N>>S;
while(N)
{
cout<<"N="<<N<<endl;
++S; cnt=;
for(int B=;B<=;++B) cnt+=isPal(change(S,B));
if(cnt>=) { out<<S<<endl; --N; }
} in.close();
out.close();
return ;
}
05-11 17:27