####Dual Palindromies####
简述:
这个和前一题很像,是找出从S+1开始的在2-10进制里面有两种进制下是回文串的前N个数,输出。
代码:
#include <stdio.h>
#include <string.h>
int ispali(int x);
int main(void)
{
freopen("dualpal.in", "r", stdin);
freopen("dualpal.out", "w", stdout);
int i, n, s, cnt = 0;
scanf("%d %d", &n, &s);
for(i = s + 1; cnt < n;i++)
if(ispali(i))
{
cnt++;
printf("%d\n", i);
}
return 0;
}
int ispali(int x)
{
int a[40];
int i, j, flag = 0;
for(i = 2; i < 11; i++)
{
int t = x, cnt = 0;
memset(a, 0, sizeof(a));
while(t > 0)
{
a[cnt++] = t % i;
t /= i;
}
for(j = 0; j < cnt / 2; j++)
if(a[j] != a[cnt - 1 -j])
break;
if(j >= cnt / 2)
{
if(!flag)
flag++;
else
break;
}
}
if(i < 11)
return 1;
else
return 0;
}