取模【先乘后除大法】

A/B关于C取模时,A和B很大时(如组合数,那就需要中间取模了,而除法不能直接取模),这时如果C是素数时,可以使用费马小定理:A * mypow(B,C-2)

而B不是很大时,可以利用先乘后除来进行解决 ,如 a=b*x+c   则 a%b==c  而 a*k=b*x*k+c*k 取模之后 (a*k)%(b*k)==c*k,即当模与数扩大K倍时,余数也扩大了K倍,这也就是说可以先利用乘法将分数化为整数,这样就能对分子的中间进行取模了,在最后再除以K即可得到正确结果。

https://www.nowcoder.com/acm/contest/81/A

 

posted @ 2018-04-21 09:44  MekakuCityActor  阅读(593)  评论(0编辑  收藏  举报