这道题一样还是比较简单的,只需要用上一道题的方法再加上进制循环就能搞定。代码如下。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char base[15]={'0','1','2','3','4','5','6','7','8','9'};
int paljudge(string sss){
int l=sss.length();
int s=0,e=l-1;
while(s<=e){
if(sss[s]!=sss[e]){
return 0;
}
s++;
e--;
}
return 1;
}
string palchange(int x,int B){
char ss[15],t[15];
int cnt=0,y=0,i=0;
while (x>=B){
y=x%B;
x/=B;
ss[cnt++]=base[y];
}
ss[cnt++]=base[x];
ss[cnt]='\0';
for(i=0;i<cnt;i++){
t[i]=ss[cnt-i-1];
}
t[i]='\0';
return t;
}
int main (){
freopen ("dualpal.in","r",stdin);
freopen ("dualpal.out","w",stdout);
int N=0,S=0;
string s;
cin>>N>>S;
int cnt=0,x=S,tt=0;
while (cnt!=N){
x++;
tt=0;
for (int i=2;i<=10;i++){
s=palchange(x,i);
if (paljudge(s)){
tt++;
}
if (tt==2){
cnt++;
cout<<x<<endl;
break;
}
}
}
}