• 洛谷 P1112 波浪数


      

    题目描述

    波浪数是在一对数字之间交替转换的数,如 121212112121211212121 ,双重波浪数则是指在两种进制下都是波浪数的数,如十进制数 191919191919191919 是一个十进制下的波浪数,它对应的十一进制数 121212121212121212 也是一个波浪数,所以十进制数 191919191919191919 是一个双重波浪数。

    类似的可以定义三重波浪数,三重波浪数在三种不同的进制中都是波浪数,甚至还有四重波浪数,如十进制 300=606300=606300=606 (七进制)= 363363363 (九进制)= 454454454 (八进制)= 1A11A11A1 (十三进制)…,你的任务就是在指定范围内找出双重、三重、四重波浪数。

    输入输出格式

    输入格式:

    单独一行包含五个用空格隔开的十进制整数,前两个数表示进制的范围( 2−322-32232 ),第三与第四个数表示指定的范围( 1−100000001-10000000110000000 ),第五个数为 2,3,42,3,42,3,4 中的一个,表示要找的波浪数的重数。

    输出格式:

    从小到大以十进制形式输出指定范围内的指定重数的波浪数。一行输出一个数。

    输入输出样例

    输入样例#1: 复制
    10 11 190000 960000 2
    输出样例#1: 复制
    191919
    383838
    575757
    767676
    959595

    妥妥的枚举,枚举区间的每一个数,枚举进制,检查是否为波浪数。
    注意一定是一对树,不能所有的数都相同。

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int b1,b2,l,r,n;
     5 int chck(int num,int bs)
     6 {
     7     int f[2]={0},flg=0;
     8     f[0]=num%bs,num/=bs;
     9     f[1]=num%bs,num/=bs;
    10     if(f[0]==f[1])
    11         return 0;
    12     while(num)
    13     {
    14         if(f[flg]!=num%bs)
    15             return 0;
    16         flg^=1;
    17         num/=bs;
    18     }
    19     return 1;
    20 }
    21 int main()
    22 {
    23     scanf("%d%d%d%d%d",&b1,&b2,&l,&r,&n);
    24     for(int i=l;i<=r;i++)
    25     {
    26         int cnt=0;
    27         for(int j=b1;j<=b2;j++)
    28             cnt+=chck(i,j);
    29         if(cnt==n)
    30             printf("%d
    ",i);
    31     }
    32     return 0;
    33 }
  • 相关阅读:
    windows7管理员权限
    Linux编程 第一个Hello World的C程序
    初步接触XCode和IPhone Simulator
    Android调用WCF
    mysql常用命令
    怎样利用Python制作守护进程
    Android模拟器如何设置DNS访问局域网内网站
    ubuntu下mysql攻略
    IIS7快速启动
    内存出错有时候是free后没有给指针赋NULL
  • 原文地址:https://www.cnblogs.com/fantasquex/p/9342309.html
Copyright © 2020-2023  润新知