NYOJ 781 又见回文数

来源:互联网 发布:c语言if else语句赋值 编辑:程序博客网 时间:2024/05/22 14:12

又见回文数

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述

冷淡的回文数被水了,各种被水,然后他很生气,然后...

一个数从左边读和从右边读一样,就说这个数是回文数。如121就是一个回文数。

这个简单了点,咱们这样规定:给定一个十进制数,你判断一下在二~十六进制下她是否是回文数,你能征服她吗?

如17用十进制表示它不是回文数,但是用二进制表示(10001),它是一个回文数。

输入
输入包含一些整数。每个数n(0<n<50000)用十进制表示,每个数一行。输入0结束。
输出
程序输出信息包括:“number i is palindrom in basis ”,i是给定的数,接着输出进制,在该进制下i是回文数。如果在二~十六进制下都不是回文,输出信息包括:“number i is not a palindrom”。
样例输入
17190
样例输出
number 17 is palindrom in basis 2 4 16number 19 is not a palindrom

 

思路:略。

#include <stdio.h>int isreverse(int m, int n){int a[32];int i = 0,j=0;while (m != 0){a[i++] = m % n;m = m / n;}i--;while (j<i){if (a[i] != a[j]){return 0;}j++;i--;}return 1;}int main(){int m;int a[16];while (scanf("%d",&m) != EOF && m){int i,j=0;for (i=2; i<=16; i++){if (isreverse(m, i)){a[j++] = i;}}if (j != 0){printf("number %d is palindrom in basis ",m);for (i=0; i<j; i++){printf("%d ",a[i]);}}else{printf("number %d is not a palindrom",m);}printf("\n");}return 0;}


 

0 0
原创粉丝点击