主题:简单的pascal题目,赠送50分大礼,来了就有分,为啥没人回答
593170024
[专家分:500] 发布于 2010-09-05 16:13:00
[size=4]请找出
2305843008139952128
的所有因子,要求在5分钟内出结果。[/size]
最后更新于:2010-09-05 18:59:00
回复列表 (共10个回复)
沙发
phile [专家分:2310] 发布于 2010-09-05 19:00:00
这还简单
板凳
593170024 [专家分:500] 发布于 2010-09-05 19:02:00
我认为很难,你们应该认为很容易吧!
3 楼
phile [专家分:2310] 发布于 2010-09-05 19:16:00
[em18]算法:高精度除法与穷举
4 楼
593170024 [专家分:500] 发布于 2010-09-05 19:34:00
运行结果,
超时
超时
超时
超时
超时
0分
5 楼
593170024 [专家分:500] 发布于 2010-09-05 19:35:00
5分钟内
6 楼
cgl_lgs [专家分:21040] 发布于 2010-09-06 00:11:00
这根本不用5分钟啦,简直就是一瞬间的事儿。
给你一个思路:
先求其质因子,并统计其质因子个数。
之后将这些质因子做组合乘:)
规模:
设数的大小是小于2的63次方的,那么其质因子个数必然少于63个。
7 楼
cgl_lgs [专家分:21040] 发布于 2010-09-06 00:14:00
另,用64位整型,CPU支持的:)
8 楼
cgl_lgs [专家分:21040] 发布于 2010-09-06 00:19:00
此数还非常特殊,它是(2**30)*2147483647。
所以计算速度简直快得没法儿说:)
我先不给你太细节方面的东西,自己先想想,想不出来我再跟你说说:)
9 楼
593170024 [专家分:500] 发布于 2010-09-07 22:16:00
之后将这些质因子做组合乘:)
组合乘是什么意思?
10 楼
cgl_lgs [专家分:21040] 发布于 2010-09-07 22:42:00
求出因子的组合,并将组合中的数相乘:)
我来回复