链接地址:http://acm.fzu.edu.cn/problem.php?pid=1698
n
3 = 1 + 2
;
当
n=3
或
n=4
时是特例,应另行考虑
n
4 = 1 + 3
;
n
5 = 2 + 3
;
n
6 = 2 + 3 + 1 = 2 + 4
;
n
7 = 2 + 3 + 2 = 3 + 4
;
n
8 = 2 + 3 + 3= 3 + 5
;
n
9 = 2 + 3 + 4
;
n
10= 2 + 3 + 5
;
n
n
由于
n
的范围是
(3<= n< 10000)
,最多可以分解成
140
多个数相乘,这就涉及到的是大数相乘里的一
个大数乘以普通大小的数。
n
我的算法是将分解完的数放到一个数组里面
n
定义一个特别大的的数组类型为
unsigned long
long
,数组大小为
63
。那么一个数组元素就可以存
放十几位的数。
n
初始化数组首位为
1
,其余为
0
。然后计算方法就是
和高精度乘法差不多。。。
n
这种方法好处就是循环次数减少了,也可以让计算
机一次多处理几位,无须再一位对应一位的
乘。。。。