这两天在想一个算法,想了不少时间

来源:互联网 发布:dev c 编程 编辑:程序博客网 时间:2024/04/23 22:15

算法内容:

 

条件1:第1个数为只能0-999
              第2个数为只能0-99
              第3个数为12位数字。(不限)
条件2:将第一个数X第二个数X第三个数结果要等为15-17位数(只能15-17位):
其中计算出来的要求如下: 
1    2    3    4    5    6    7    8    9    10   11  12 13 14 15 16 17
0-4  0-9  0-4  0-9  0-4  0-9  0-4  0-9  0-4  0-9   0  这后面的不限定
注:11位那里一定是为0;
我发几组数上来给你们看一下,看有没有什么规律.
第一组/ 539 X 05 X 448330995919 = 1208252034 001705  (16位)
第二组/ 205 X 34 X 488258384792 = 3403160942 000240  (16位)
第三组/ 946 X 42 X 909657315263 = 3614250445 0029516 (17位)
第四组/ 456 X 45 X 165811975293 = 3402461733 012360  (16位)
第五组/ 486 X 33 X 170099204764 = 2728051046 005032  (16位)
第六组/ 092 X 15 X 103046493406 = 1422041609 00280   (15位)
看到没,每组结果的13579位都不能大于4,第十一位必须是0.

因为1000 X 100 X 1000000000000 = 1E+18   (3+2+12+1=18) 所以最大值为不会超过18位
假设A、B、C三个数,C1为C的第1位数字,C2为C的第2位数字,C12为C的第1和2位数字,C13为C的第1、2和3位数字,依次类推。

问题分成:
1、使数不小于15位;
   S=A*B*C13
   S>100000
2、第13579位都不大于4;
(1)第1位小于4;
   若0<S1<=4 则成立。
(2)第3位小于4;
(3)第5位小于4;
(4)第7位小于4;
(5)第9位小于4;
3、第11位为0;

 

其实这是一个数字相乘题的分析,若要两个数字相乘,有一定的规律,可用递归来思考。

 

 

原创粉丝点击