Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:用一个不大正确的算法糊弄过去了……谁能给个正确算法的提示?In Reply To:用一个不大正确的算法糊弄过去了……谁能给个正确算法的提示? Posted by:frkstyc at 2005-12-04 23:48:59 不如frkstyc先说说你不大正确的算法吧…… 我个人的感觉是: 代码在不断地减小 开始的时候我以为要算出每一个数a^k 后7位=a^(k%p) 后7位的最小的p值(当k〉7时成立) 超时了…… 然后在本地把所有的p值打印出来,都是500000的因子(排除一些特殊情况,例如a为10的倍数)然后我就直接用500000作为p值糊弄过去了 不过还是超时 然后我发现如果先把所有数据都算出来的话,可以避免一些重复计算 原来算每一个数据时,例如 算数据2 4 7时 m=2^2%500000 m=2^m%500000 m=2^m%500000 f(2,4,7)=2^m%10000000 而其实算2 5 7的话,使用上面的m值 只需多添加一步 m=2^m%500000 则f(2,5,7)=2^m%10000000 然后终于没有超时了~~~~ PS: a^k 后7位=a^(k%p) 后7位的最小的p值(当k〉7时成立) 例如 不存在p>0,2^1 后7位=a^p+1 后7位 开始的时候我添加了判断,后来删除了,好像没影响…… 不知道78ms的还需要优化什么,难道在使用链乘法的时候可以把__int64的变量都省去? Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator