Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:用一个不大正确的算法糊弄过去了……谁能给个正确算法的提示?

Posted by Loger at 2005-12-05 22:55:24 on Problem 2720
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator