回 帖 发 新 帖 刷新版面

主题:[讨论]这道题目请大家帮我想想算法(不是源代码!)

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

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

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

样例输入:
10 11 190000 960000 2

样例输出:
191919
383838
575757
767676
959595

回复列表 (共12个回复)

沙发

请各位牛人帮我想想算法
只提供好一点的算法就可以了

我自己想了模拟法
但从1循环到10000000就一定超时
就不谈进行操作了
超时100%

板凳

先看它是不是十进制波浪数,在将它转换成九进制,八进制,七进制·····二进制
的波浪数,依次类推。

ps:我是个新手,想法也许不成熟,望大家指出!

3 楼

我也是这样想的
不过超时是肯定的
所以我才发帖子向大家求助好算法啊!

4 楼

构造法
把每个进制的所有破浪数构造出,比如一进制只有1111,二进制有1212,1111,2222
我们看到1111重复了两次,所以输出1111
注意1111,2222不是枚举出来的,是直接造出的。
实现:用比较大的boolean数组存下每个数的出现次数,最后在看有没有合法的。

大家看有没有问题??

5 楼

楼上的真厉害,还有一进制,二进制中竟然还出现了2

6 楼

算法本身是可行的
不过这些细节似乎就不用提出来了
学编程的应该都知道进制的问题

7 楼

CXY,我问了QQ上的人,他说可以只搜索前两位,然后整个数不就可以产生了吗
可是具体的操作我还是没能实现

还有,大家看看,1  12  123123123算不算是波浪数啊

8 楼

我也不会.
第一题怎么编??
1、N进制乘法口诀表(work1.pas)
键盘输入一个自然数N(2≤N≤16),打印出N进制乘法口诀表。请注意格式,以下是N=16时的运
行结果:
*   0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
0   0
1   0   1
2   0   2   4
3   0   3   6   9
4   0   4   8   C  10
5   0   5   A   F  14  19
6   0   6   C  12  18  1E  24
7   0   7   E  15  1C  23  2A  31
8   0   8  10  18  20  28  30  38  40
9   0   9  12  1B  24  2D  36  3F  48  51
A   0   A  14  1E  28  32  3C  46  50  5A  64
B   0   B  16  21  2C  37  42  4D  58  63  6E  79
C   0   C  18  24  30  3C  48  54  60  6C  78  84  90
D   0   D  1A  27  34  41  4E  5B  68  75  82  8F  9C  A9
E   0   E  1C  2A  38  46  54  62  70  7E  8C  9A  A8  B6  C4
F   0   F  1E  2D  3C  4B  5A  69  78  87  96  A5  B4  C3  D2  E1

9 楼

1不是波浪数

10 楼

告诉大家,LHC在JS论坛上已经说了:1不算,12算

我来回复

您尚未登录,请登录后再回复。点此登录或注册