zoukankan      html  css  js  c++  java
  • 【洛谷 1027】双重回文数

    题目描述

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

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

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

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

    输入输出格式

    输入格式:

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

    输出格式:

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

    输入输出样例

    输入样例#1: 复制
    3 25
    
    输出样例#1: 复制
    26
    27
    28
    

    说明

    题目翻译来自NOCOW。

    USACO Training Section 1.2

    题解:进制转换+回文数

    // luogu-judger-enable-o2
    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    typedef long long ll;
    using namespace std;
    bool poww(int n, int b){
        int s=0, m=n;
        while (n>0){
            s=s * b + n%b; n/=b;  
        } 
        return s==m;
    }
    int n,s;
    bool pd(int z){
        int jjj=0;
        for(int i=2;i<=10;i++)
            if(poww(z,i)==1) jjj++;
        if(jjj>=2) return 1;
        return 0;
    }
    int main(){
        //freopen("1207.in","r",stdin);
        //freopen("1207.out","w",stdout);
        scanf("%d %d",&n,&s); 
        while(n){
            s++;
            if(pd(s)==1){
                printf("%d
    ",s);
                n--;
            }
            
        }
        return 0;
    }
  • 相关阅读:
    通过JavaScript垃圾回收机制来理解WeakSet/WeakMap中对象的弱引用
    json处理
    dotenv 加载本地环境变量
    各种ast库
    类型检测库
    npm 加解密库
    用计算机语言的爱情表白
    情侣在招聘会上搂抱招致企业反感
    《软件性能测试与LoadRunner实战》网上订购问题
    F1赛车的起源
  • 原文地址:https://www.cnblogs.com/wuhu-JJJ/p/11182357.html
Copyright © 2011-2022 走看看