输入一个正整数n,至少在两个不同的进位制下,b1,b2都是回文数,(2,10)之间的进位制,回文数不包含前导0,输入正整数S<10^6,输出比S大的双基回文数.
思路:用count标记,在一个进位制下如果是回文数,则+1,为2时直接退出,输出结果
不包含前导0,回文数首位为0,直接退出判断回文数的循环
#include<stdio.h>
#define MAX 32
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int count=0;
int a[MAX];
while(1)
{
int i,j,k,temp,end;
n=n+1;
count = 0;
for(k=2;k<=10;k++)
{
i=0;
temp = n;
while(temp)
{
a[i]=temp%k;
temp=temp/k;
i++;
}
end=i--;//记录回文数最后一位的位置,判断回文数是否有前导0
for(j=0;j<i;j++,i--)
{
if((a[j]!=a[i])||a[0]==0||a[end]==0)
{
break;
}
}
if(j>=i)
count++;
if(count==2)
break;
}
if(count==2)
{
break;
}
}
printf("%d\n",n);
}
}