ZOJ 1078 Palindrom Numbers

Palindrom Numbers

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1078

 

题目大意:判断一个数在2-16进制下是否为回文数,若是,输出所有满足条件的进制数。

注意点:网上看到一个相对较好的想法,把一个数化为某进制后直接逆序保留其十进制数的值与原数比较,相等即为回文数。

代码如下:

 1 //Problem Name: Palindrom Numbers
 2 //Source: ZOJ 1078
 3 //Author: jinjin18
 4 //Main idea: easy to solve
 5 //Language: C++
 6 //======================================================================
 7 
 8 
 9 #include<stdio.h>
10 #include<vector>
11 
12 using namespace std;
13 
14 int isPalindrom(int n,int basis){
15     int res = 0;           //保存逆转之后的十进制
16     int copyn = n;
17     while(copyn){
18         res *= basis;
19         res += copyn%basis;
20         copyn = copyn/basis;
21     }
22     if(n == res){
23         return 1;
24     }else{
25         return 0;
26     }
27 }
28 
29 
30 int main(){
31     int n;
32 
33     vector<int> data;
34     while(scanf("%d",&n)!=EOF&&n!=0){
35         int sign = 0;
36         data.clear();
37         for(int i = 2;i <= 16; i++){
38             if(isPalindrom(n,i)){
39                 data.push_back(i);
40                 sign = 1;
41             }
42         }
43         if(sign){
44             printf("Number %d is palindrom in basis",n);
45             for(vector<int>::iterator it = data.begin();it != data.end();it++){
46                 printf(" %d",*it);
47             }
48             printf("\n");
49         }else{
50             printf("Number %d is not a palindrom\n",n);
51         }
52     }
53 
54 
55     return 0;
56 }

 

转载于:https://www.cnblogs.com/jinjin-2018/p/8976826.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值