作者Natsutaka (夏宇)
看板b98902HW
标题Re: [计程] TestGirl第9题
时间Sat Oct 24 16:55:55 2009
感谢SA大的意见,让我把这一题作出来了
旧程式如下:
http://homepage.ntu.edu.tw/~b94202058/test09.c
新程式如下:
http://homepage.ntu.edu.tw/~b94202058/test09_01.c
旧程式是把B到C每一个数都和A做辗转相除
新程式根据SA大的意见,先找出A所有的质因数
但做了一点修正,没有对[B, C]间所有的整数建表
因为当 B=2, C=10000000时,就得建一个40MB的表
TestGirl不会允许程式使用这麽多记忆体
替代的方法是:
先 coprimes = C - B + 1
然後由小到大检查B到C每一个数
若发现该数可被A的某一个质因数整除,就 coprimes--
然後我输入测资:
2 2 100000000
2 2 1000000000
2 2 499999999
根据我用笔电上的cygwin测试的结果
旧程式跑2分37秒
新程式跑1分49秒
相信在资讯系强大的伺服器上一定跑得更快
感谢大家辛劳
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.217.60