当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

zoj 1078 palindrom numbers

发表于: 2011-07-22   作者:codePrac   来源:转载   浏览:
摘要:  题目见zoj 1078  主要是判断一个整数在基数为2-16之间的某个数字时是否为回文,我是直接该整数转换成对应基数的表示的逆序列,并计算出该表示下的值,判断是否等于这个整数值,如果相等,那么就是回文,如果不相等就不是。   /* zoj 1078 Palindrom Numbers */ #include <stdio.h> #defi

 题目见zoj 1078

 主要是判断一个整数在基数为2-16之间的某个数字时是否为回文,我是直接该整数转换成对应基数的表示的逆序列,并计算出该表示下的值,判断是否等于这个整数值,如果相等,那么就是回文,如果不相等就不是。

 

/* zoj 1078 Palindrom Numbers */
#include <stdio.h>

#define MAX 30

int 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[i]);
	  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[i];
  if(temp == decNum)
    return 1;
  else
    return 0;
}
  
 

 

zoj 1078 palindrom numbers

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号