缘起
日常水题 poj 2773 Happy 2006
分析
题意
1 | 如果大公约数(GCD)为1,则两个正整数被认为是相对素数。例如,1,3,5,7,9 ......都是相对于2006年的素数。 |
因为 gcd(a,b) = gcd(a+t*b, b), 所以其实 [1,m-1]中和m互质的正整数个数和[m+1, 2m-1]中和m互质的正整数个数是一样的.
所以只需要求出[1,m-1]内和m互质的正整数构成的数组p(恰好是欧拉函数$\phi(m)$个)然后$p[k\%\phi(m)]$ 就是答案 .
而求欧拉函数有两种方法, 一种是基于筛法(【1】),另一种是直接求解法——它基于分解素因数(非大数分解质因数的Pollard rho算法,只是朴素)模板
【1】中已经练习了筛法求欧拉函数,这里使用基于分解素因数的算法.
1 | //#include "stdafx.h" |
ac情况
20751832 | yfsyfs | 2773 | Accepted | 4432K | 32MS | G++ | 1300B | 2019-08-16 16:04:38 |
---|---|---|---|---|---|---|---|---|
参考
Powered By Valine
v1.5.2
v1.5.2