[RQNOJ313]波浪数

题目描述

波浪数是在一对数字之间交替转换的数,如1212121,双重波浪数则是指在两种进制下都是波浪数的数,如十进制数191919是一个十进制下的波浪数,它对应的十一进制数121212也是一个波浪数,所以十进制数191919是一个双重波浪数。
类似的可以定义三重波浪数,三重波浪数在三种不同的进制中都是波浪数,甚至还有四重波浪数,如十进制300=606(七进制)=363(九进制)=454(八进制)=1A1(十三进制)…,你的任务就是在指定范围内找出双重、三重、四重波浪数。

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1:

10 11 190000 960000 2

输出样例#1:

191919
383838
575757
767676
959595
var a,b,c,d,e,i,j,k,n:longint;
    x,y:array[0..10000000] of longint;
begin
    readln(a,b,c,d,e);
    for i:=a to b do
        begin
            for j:=1 to i-1 do
                for k:=0 to i-1 do
                    begin
                        n:=0;
                        if (j=k) then continue;
                        while true do
                            begin
                                n:=n*i+j;
                                if n>d then break;
                                inc(x[n]);
                                n:=n*i+k;
                                if n>d then break;
                                inc(x[n]);
                            end;
                    end;
        end;
    for i:=c to d do
        begin
            if (x[i]=e) then writeln(i);
        end;
end.
View Code
原文地址:https://www.cnblogs.com/yangqingli/p/4919630.html