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 |
总结一下……In Reply To:新人吐血……贡献n个wa居然是忘了输入是以0结尾…… Posted by:DongSJ at 2011-08-26 16:27:11 前辈其实已经总结的很好了,首先L输入后判断因子2和5的指数,如果因子2的指数超过3或者含有5的指数无解。然后把所有的2因子除去。这就是L/gcd(L,8)。 10^n=1(mod 9*L)的所谓最小解(这里L已经除去了2因子),首先用欧拉函数求出可行解M=phi(9*L),然后枚举M的所有因子pi,如果pi除去以后仍能满足10^n=1(mod 9*L),就将该因子除去。 关于乘方过程中乘法溢出的问题,我的程序是碰到了,因为L已经达到了2^31这么大,再乘个9,肯定有可能超过2^32,两个一乘自然就溢出了,不知道有的前辈说没有溢出的是什么情况。这个问题的解决是把乘法分解成加法,乘法溢出,加法总不会溢出。分解成加法后照样可以用快速乘方类似的思路二分,所以一次乘法最多不会超过log(n)次加法,效率也还过的去。 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator