如果一个正整数n至少在两个不同的进位制b1和b2下都是回文数(2<=b1,b2<=10),则称n是双基回文数(注意,回文数不能包含前导0)。输入正整数S<10^6,输出比S大的最小双基回文数。
输入样例:
1600000
输出样例:
1632995
#include<stdio.h>
int is_huiwen(int a[], int len)
{
for(int i = 0;i < len / 2; i++)
{
if(a[i] != a[len - i - 1])
{
return 0;
}
}
return 1;
}
int is_k_huiwen(int n, int k)
{
int a[50];
int j = 0;
while(n)
{
a[j++] = n % k;
n /= k;
}
return is_huiwen(a, j);
}
int main()
{
int n;
int count = 0;
scanf("%d", &n);
for (int i = n + 1; ; i++)
{
count = 0;//注意一定要置0
for (int k = 2; k <= 10; k++)
{
if (is_k_huiwen(i, k))
{
count++;
}
if (count == 2)
{
printf("%d\n", i);
return 0;
}
}
}
return 0;
}