嗜血魂K

导航

1.2 Dual Palindromes

枚举的数据不大于4字节整形,最多用33位char就可以储存其二进制了。

有上一题的基础。。这题就很简单了。。而且以前明明写过对初学者很难的mirrored palindrome 0 0

网上有说进制转换用Itoa,不过这尼玛不是ansi c的,而且2-16进制= =

/*
ID:y7276571
LANG: C
TASK: dualpal
*/
#include<stdio.h>
#include<string.h>
#define MAXLEN 50
char str[MAXLEN];
int ispal(char *s)
{
int i, len = strlen(s);
for(i = 0; i < (len+1)/2; i++)
if(s[i] != s[len-i-1]) return 0;
return 1;
}
void convert(int n, int b)
{
int i = 0;
while(n)
{
str[i++] = n%b+'0';
n /= b;
}
str[i] = '\0';
}
int main(void)
{
freopen("dualpal.in", "r", stdin);
freopen("dualpal.out", "w", stdout);
int i, j, ok;
int N, S;
scanf("%d%d", &N, &S);
for(i = S+1; ;i++)
{
ok = 0;
for(j = 2; j < 11; j++)
{
convert(i, j);
if(ispal(str)) ok++;
if(ok == 2) { printf("%d\n", i); N--; break; }
}
if(!N) break;
}
return 0;
}

 

posted on 2011-11-04 13:17  嗜血魂K  阅读(160)  评论(0编辑  收藏  举报