如果一个正整数n至少在两个不同的进位制b1和b2下都是回文数(2 <= b1, b2 <= 10),则称n是双击回文数(注意,回文数不能只包含前导零)。输入正整数S < 10^6,输出比S大的最小双基回文数。
样例输入: 1600000
样例输出: 1632995
分析:
本题求的是从S+1开始,在枚举在(2~10)进位制中含有两个不同进位制的回文数。在转换为各种进制时,将数据存入在数组中,再判断其是否为回文数。
#include<stdio.h>
int Find(int m,int n)
{
int F[1000], i = 0;
while(m)
{
F[i++] = m%n;
m = m/n;
}
for(int j = 0; j < i/2; j++)
if(F[j] != F[i-j-1])
return 0;
return 1;
}
int main()
{
int num,t = 0;
scanf("%d",&num);
while(t != 2)
{
num++;
t = 0;
for(int i = 2; i <= 10; i++)
{
if(Find(num,i))
t++;
if(t == 2)
break;
}
}
printf("%d\n",num);
return 0;
}