您的位置:首页 > 其它

ZOJ-1078

2014-02-13 22:26 344 查看
水题一道,求各种进制表示后是否回文数

#include<stdio.h>
#include<string.h>

int base_number(int number, int base, int res[])
{
int total = 0;
while (number)
{
res[total++] = number % base;
number /= base;
}
return total;
}

int main()
{
int number, res[16], flag[17];
while (scanf("%d", &number), number)
{
memset(flag, 0, 17 * sizeof(int));
int i, j, hasp = 0;
for (i = 2; i <= 16; i++)
{
int n = base_number(number, i, res);
int isp = 1;
for (j = 0; (j < n / 2) && isp; j++)
if (res[j] != res[n - 1 - j])
isp = 0;
if (isp)
{
flag[i] = 1;
hasp = 1;
}
}
if (hasp)
{
printf("Number %d is palindrom in basis", number);
for (i = 2; i <= 16; i++)
if (flag[i])
printf(" %d", i);
putchar('\n');
}
else
printf("Number %d is not a palindrom\n", number);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: