上班路上想到的有意思的问题
有三位以上的十进制数字,数位不含有0。假设满足,任意千位以上数字均是其后
两位数字的和,请问
这种数字一共多少个? 比如
918 9 = 1 + 8
8532 8 = 5 + 3 5 = 3 + 2 斐波那契吗?
试一下:
-----------------
853211
53211
3211
211
------------------
312
4312
74312
------------------
413
5413
95413
--------------------
514
6514
---------------
615
7615
-------------
716
8716
---------------
817
9817
----------------
918
------------
321
5321
85321
-------------
422
6422
-------------
523
7523
-------------
624
8624
-----------
725
9725
--------------
826
927
---------------
431
7431
---------------
532
8532
-------------
633
9633
----------------
734
835
936
------------------
541
9541
----------------
642
743
844
945
---------------
651
752
853
954
---------------
761
862
963
---------------
871
972
--------------
981 穷举57个。没细验证,也不知有无遗漏下的。吃饭饭去鸟。 SQL> with t1 as(select level l from dual connect by level <=9)
2,t(lv,s) as(select * from(select 2 ,cast(to_char(level,'fm99') as varchar(10)) s from dual connect by level<=99)where substr(s,1,1)+sub
str(s,2,1)<=9 and mod(s,10)<>0
3union all
4select lv+1 ,l||s from t,t1 where l=substr(s,1,1)+substr(s,2,1)and lv<9)
5select lv,s from t where lv>=3 order by 1,2;
LV S
------ --------------------
3 211
3 312
3 321
3 413
3 422
3 431
3 514
3 523
3 532
3 541
3 615
3 624
3 633
3 642
3 651
3 716
3 725
3 734
3 743
3 752
3 761
3 817
3 826
3 835
3 844
3 853
3 862
3 871
3 918
3 927
3 936
3 945
3 954
3 963
3 972
3 981
4 3211
4 4312
4 5321
4 5413
4 6422
4 6514
4 7431
4 7523
4 7615
4 8532
4 8624
4 8716
4 9541
4 9633
4 9725
4 9817
5 53211
5 74312
5 85321
5 95413
6 853211
已选择57行。
SQL> 95431
85312
?????
..... 楼上这两个数字,完全不行啊!!
有疑问吗? :loveliness:
呃,那我错了
我没注意第四位的约束 本帖最后由 chyanog 于 2010-9-26 23:50 编辑
我也找到57个,本来用C写的,但类型转化老让我纠结,便用Java了,才发现似乎在咱们群里没有见过java代码:
public class NewClass1 {
public static void main(String[] args) {
long start = System.nanoTime();
int count = 0;
for (int i = 1; i < 10; i++) {
for (int j = 1; j < 10; j++) {
int a, a1 = i, a2 = j, t = 10 * a1 + a2;
while (a1 + a2 < 10) {
a = a1 + a2;
a1 = a2;
a2 = a;
t = (int) (Math.pow(10.0, Math.floor(Math.log10(t)) + 1.0) * a + t);
System.out.print(t + (++count % 10 == 0 ? "\n" : " "));
}
}
}
System.out.println("\ncount : " + count + "\nTiming: " + (System.nanoTime() - start) / Math.pow(10, 9) + "s");
}
}
211 3211 53211 853211 312 5312 85312 413 7413 514
9514 615 716 817 918 321 4321 74321 422 6422
523 8523 624 725 826 927 431 5431 95431 532
7532 633 9633 734 835 936 541 6541 642 8642
743 844 945 651 7651 752 9752 853 954 761
8761 862 963 871 9871 972 981
count : 57
Timing: 0.003259012s 8# 无心人
不知道譬如8532119的数算不算呢?
页:
[1]
2