ZOJ-1078 多进制回文相等

1078:给出一个十进制数。求在2到16进制下构成回文的进制。

Sample Input

17
19
0


Sample Output

Number 17 is palindrom in basis 2 4 16
Number 19 is not a palindrom


思路:简单题。进行进制转换。由于要判断回文,正序和逆序都可。因此采用循环取余即可。
回文判断采用首尾比较的方法。


#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;

char val[16];
char ref[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

void convertBase(int num,int base)
{
int i=0;
while(num)
{
val[i]=ref[num%base];
num/=base;
i++;
}
val[i]='\0';
}

bool reverseEqual(char *p)
{
int len=strlen(p);
bool equal=true;
for(int i=0;i<len/2;i++)
{
if(p[i]!=p[len-1-i])
{
equal=false;
break;
}
}
return equal;

}

int main()
{

int number;
bool isPalindrom;
while(1)
{
cin>>number;
isPalindrom=false;
if(number==0)
break;
for(int i=2;i<=16;i++)
{
convertBase(number,i);
if(reverseEqual(val))
{
if(isPalindrom==false)
{
isPalindrom=true;
printf("Number %d is palindrom in basis",number);
printf(" %d",i);
}
else
{
printf(" %d",i);
}

}


}
if(isPalindrom==false)
printf("Number %d is not a palindrom",number);
printf("\n");

}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值