Processing math: 100%

[HDU 5780]gcd

有个很好康的结论:

gcd(xa1,xb1)=xgcd(a,b)1

然后尝试去用常见套路(枚举gcd)化简柿子,得到:

nk=1(xk1)1a,bn[gcd(a,b)=k]

推到这里了,看到那个1a,bn[gcd(a,b)=k]可能很多同学准备直接上莫比乌斯函数了……其实并不需要,其实那个柿子就是:

2nki=1φ(i)1

这个意义还是很显然的……更好的一点是这个柿子可以预处理出来,然后整除分块直接搞一波即可。

代码:

[BZOJ 2186]沙拉公主的困惑

这个题啊……亦可赛艇!

答案是。原因很简单,把分成长度为的若干段,除去第一段外每一段中与互质的数肯定满足(否则,就会有大于一的公因子了)。所以说每一段内与互质的数都有个。

麻烦好像就在于求一个阶乘的欧拉函数。考虑一个新乘上的数能给答案带来的贡献——如果这个数是合数,它的所有因子在前面都有了,只能把他自己贡献出来;如果这个数是质数(假设为),出了贡献自己以外还会贡献一个,最后乘起来就是贡献了。筛一遍素数再递推一下就好辣~

并且……可能非常大,所以说除去那块要用逆元做。

(顺便说下阶乘也要递推)

代码: