• COGS 678. 双重回文数


    ★   输入文件:dualpal.in   输出文件:dualpal.out   简单对比
    时间限制:1 s   内存限制:128 MB

    Dual Palindromes 双重回文数

    描述 [USACO 1.2.5]

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

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

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

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


    格式

    PROGRAM NAME: dualpal

    INPUT FORMAT:

    (file dualpal.in)

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

    OUTPUT FORMAT:

    (file dualpal.out)

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


    SAMPLE INPUT

    3 25
    


    SAMPLE OUTPUT

    26
    27
    28


    模拟

    
    

    屠龙宝刀点击就送

    #include <cstring>
    #include <cstdio>
    #define N 10005
    int n,s,num,a[N];
    bool judge(int x,int Mod)
    {
        int l=0;
        while(x)
        {
            a[++l]=x%Mod;
            x/=Mod;
        }
        int L=1,R=l;
        for(;L<=R&&a[L]==a[R];L++,R--);
        if(L>R) return true;
        else return false;
    }
    int main(int argc,char *argv[])
    {
        freopen("dualpal.in","r",stdin);
        freopen("dualpal.out","w",stdout);
        scanf("%d%d",&n,&s);
        for(int i=s+1;num<n;++i)
        {
            int k=2,yes=0;
            while(k<=10&&yes<2)
            {
                if(judge(i,k)) yes++;
                ++k;
            }
            if(yes==2) ++num,printf("%d
    ",i);
        }
        fclose(stdin); fclose(stdout);
        return 0;
    }
  • 相关阅读:
    锤子科技官网:问题整理及注意事项
    springboot中文文档
    Spring Framework 开发参考手册中文(在线HTML)
    .is() 全选复选的判断
    c:forEach用法
    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
    火狐浏览器下载文件保存文件名的乱码问题
    多线程安全的解决方法
    MySQL的concat以及group_concat的用法
    mysql 将时间转换成时间戳
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7724126.html
Copyright © 2020-2023  润新知