六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 34|回复: 0

zoj 1078 palindrom numbers

[复制链接]

升级  29.33%

24

主题

24

主题

24

主题

秀才

Rank: 2

积分
94
 楼主| 发表于 2013-1-26 12:36:19 | 显示全部楼层 |阅读模式
 题目见zoj 1078
 主要是判断一个整数在基数为2-16之间的某个数字时是否为回文,我是直接该整数转换成对应基数的表示的逆序列,并计算出该表示下的值,判断是否等于这个整数值,如果相等,那么就是回文,如果不相等就不是。
 
/* zoj 1078 Palindrom Numbers */#include <stdio.h>#define MAX 30int isPalindrom(int base, int decNum);int main(void){  int i,count;  int n,baseStr[MAX];    while(scanf("%d", &n) == 1 && n != 0)    {      count = 0;      for(i = 2; i <= 16; i++)if(isPalindrom(i, n))  baseStr[count++] = i;      if(count == 0)printf("Number %d is not a palindrom\n", n);      else{  printf("Number %d is palindrom in basis",n);  for(i = 0; i < count; i++)    printf(" %d",baseStr);  printf("\n");}    }  return 0;}int isPalindrom(int base, int decNum){  int revBaseStr[MAX];  int i,count;  int temp = decNum;    for(count = 0; temp > 0; temp /= base)    revBaseStr[count++] = temp%base;  for(temp = 0, i = 0; i < count; i++)    temp = temp * base + revBaseStr;  if(temp == decNum)    return 1;  else    return 0;}    
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表