标签:
Regionals 2001 >> Latin America - South America
题链接:UVALive2389 ZOJ1078 Palindrom Numbers。入门训练题,用C语言编写程序。
题意简述:输入若干个整数,0作为结束。对于输入的整数n,问其几进制为回文数?
这是一个有关进制处理的问题,都是套路。程序中,封装了一个函数ispalindrom()用于将整数转换为指定进制的字符串,同时判断是否为回文数。使用数组ans[]作为标志,其元素个数需要多一个,是否为回文数的标志放在ans[0]中。
AC的C语言程序如下:
/* UVALive2389 ZOJ1078 Palindrom Numbers */ #include <stdio.h> #include <memory.h> #define MAXN1 20000 #define MAXN2 16 char t[MAXN1]; int ispalindrom(int val, int base) { int count=0, start, end; while(val) { t[count++] = val % base; val /= base; } start = 0; end = count - 1; count = 1; while(start < end) { if(t[start] != t[end]) { count = 0; break; } start++; end--; } return count; } int main(void) { int n, i; int ans[MAXN2+1]; while(scanf("%d", &n) != EOF && n != 0) { memset(ans, 0, sizeof(ans)); for(i=2; i<=MAXN2; i++) if(ispalindrom(n, i)) { ans[0] = 1; ans[i] = 1; } if(ans[0]) { printf("Number %d is palindrom in basis", n); for(i=2; i<=MAXN2; i++) if(ans[i]) printf(" %d", i); printf("\n"); } else printf("Number %d is not palindrom\n", n); } return 0; }
UVALive2389 ZOJ1078 Palindrom Numbers
标签:
原文地址:http://blog.csdn.net/tigerisland45/article/details/52099977