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

总结一下……

Posted by DongSJ at 2011-08-26 16:42:34 on Problem 3696
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:
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