若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

1409: 1.2.5 Dual Palindromes 双重回文数

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,247

题目描述

如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”。例如,12321就是一个回文数,而77778就不是。当然,回文数的首和尾都应是非零的,因此0220就不是回文数。

事实上,有一些数(如21),在十进制时不是回文数,但在其它进制(如二进制时为10101)时就是回文数。

编一个程序,从文件读入两个十进制数N (1 <= N <= 15)S (0 < S < 10000)然后找出前N个满足大于S且在两种或两种以上进制(二进制至十进制)上是回文数的十进制数,输出到文件上。

本问题的解决方案不需要使用大于32位的整型

输入

只有一行,用空格隔开的两个数N和S。

输出

N行, 每行一个满足上述要求的数,并按从小到大的顺序输出.

样例输入

3 25

样例输出

26
27
28

参考代码

#include<stdio.h>   
int judge(int num,int n);
/*进制转换并判断是否为回文数*/
int judge(int num,int n) 
{
    int L=0,r=-1,b[35];
    while(num>0) 
    {
        b[++r]=num%n;
        num/=n;
    }
    while(L<=r&&b[L]==b[r]) 
    {
        L++;
        r--;
    }
    return L>r?1:0;
}
int main() 
{
    //freopen("dualpal.in","r",stdin);  
    //freopen("dualpal.out","w",stdout);  
    int i,n,s,num;
    scanf("%d%d",&n,&num);
    while(n>0) 
    {
        num++;
        i=2;
        s=0;
        while(i<=10&&s<2) 
        {
            if(judge(num,i))  
                            s++;
            i++;
        }
        if(s==2) 
        {
            printf("%dn",num);  
                 n--;  
          }  
     }    
     return 0;  
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

原站点 Skip Dreams孤独患者
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist