题意:给两个数n, s。找出比s大的前n个2-->10进制中至少两个是回文串的数。
如果做了上一题,那么这一题并不难,因为都是考进制转换的。
唯一需要注意的点是,是以2个以上(包括两个)进制2 --> 10能转转化为回文串。
/*
ID: DickensTone
LANG: C++
PROB: dualpal
*/
#include<cstdio>
const int maxn = 33;
int num[maxn];
int print(int s)
{
int a = 0;
for(int base = 2; base <= 10; base++)
{
int n = 0;
int t = s;
while(t)
{
num[n++] = t % base;
t = t / base;
}
bool ok = true;
for(int i = 0; i < n / 2; i++)
{
if(num[i] != num[n - 1- i]) ok = false;
}
if(ok) a++;
if(a >= 2) return true;
}
return false;
}
int main()
{
freopen("dualpal.in", "r", stdin);
freopen("dualpal.out", "w", stdout);
int n, s;
while(scanf("%d%d", &n, &s) == 2)
{
int cnt = 0;
while(cnt < n)
{
if(print(++s))
{
printf("%d\n", s);
cnt++;
}
}
}
return 0;
}