zoukankan      html  css  js  c++  java
  • Vijos 波浪数

    描述

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

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

    格式

    输入格式

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

    输出格式

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

    样例1

    样例输入1

    10 11 190000 960000 2
    

    样例输出1

    191919
    383838
    575757
    767676
    959595
    

    限制

    每个测试点1s

    来源

    冰火熔寒&XTXWZOI

     1 /*
     2     如果从x到y循环的话 会超时的
     3     那么就枚举进制 构造进制数
     4     再找s重进制数 
     5 */
     6 #include<ctime>
     7 #include<cstdio>
     8 #include<iostream>
     9 #define MAXN 10000010
    10 
    11 using namespace std;
    12 
    13 int ja,jb,x,y,s;
    14 
    15 int num[MAXN];
    16 
    17 inline void read(int&x) {
    18     x=0;int f=1;char c=getchar();
    19     while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}
    20     while(c>='0'&&c<='9') {x=(x<<1)+(x<<3)+c-48;c=getchar();}
    21     x=x*f;
    22 }
    23 
    24 inline int query_long(int n,int p) {
    25     int cnt=0;
    26     while(n) {
    27         n/=p;
    28         cnt++;
    29     }
    30     return cnt;
    31 }
    32 
    33 inline int TEN_MAKE(int a,int b,int len,int p) {
    34     int NUM=0;
    35     for(int i=1;i<=len;i++) {
    36         if(i&1) NUM=NUM*p+a;
    37         else NUM=NUM*p+b;
    38     }
    39     return NUM;
    40 }
    41 
    42 inline void JZ_make(int p) {
    43     int l=query_long(x,p),r=query_long(y,p);
    44     for(int i=1;i<p;i++)
    45       for(int j=0;j<p;j++)
    46         if(i!=j) 
    47           for(int len=l;len<=r;len++) {
    48               int th=TEN_MAKE(i,j,len,p);
    49               if(th>=x&&th<=y) num[th]++;
    50           }
    51     return;
    52 }
    53 
    54 int main() {
    55     read(ja);read(jb);read(x);read(y);read(s);
    56     for(int i=ja;i<=jb;i++)
    57       JZ_make(i);
    58     for(int i=x;i<=y;i++)
    59       if(num[i]==s) printf("%d
    ",i);
    60     return 0;
    61 }
    代码


    作者:乌鸦坐飞机
    出处:http://www.cnblogs.com/whistle13326/
    新的风暴已经出现 怎么能够停止不前 穿越时空 竭尽全力 我会来到你身边 微笑面对危险 梦想成真不会遥远 鼓起勇气 坚定向前 奇迹一定会出现

     
  • 相关阅读:
    Overview | POCO C++ Libraries
    simple.c
    Classes for Writing HTTP Clients in C++ CodeProject
    APScheduler 2.0.3 : Python Package Index
    neon HTTP and WebDAV client library
    HTTP Client C API
    vi编辑器的学习使用(二十一)
    自由软件的定义
    vi编辑器的学习使用(二十三))
    vi编辑器的学习使用(二十二)
  • 原文地址:https://www.cnblogs.com/whistle13326/p/7219529.html
Copyright © 2011-2022 走看看