题意:
将n-1(n为正整数)分为若干个n的约数倍数和(约数不为1或n).
n<=1e9.
无解输出"NO".
题解:
先考虑无解的情况,因为n-1与n互质,故若所有约数的公约数不为1,则n-1一定不能被表示,即n为一个质数的次幂时无解。
接着考虑剩余情况是否一定有解。
因为多个数过于复杂,故先考虑两个数。首先这两个数要互质,设n-1=ax+by(x,y|n,x,y为互质的大于1的正整数),于是只需证明存在正整数a,b满足等式即可。若n,x,y确定,则a,b为未知数,即可变形为b=(n-1-ax)/y,那么只需证明在a为正整数的时存在正整数b即可,即为:
1.y|(n-1-ax)
2.n-1-ax>0.
对于1, 由于y|n,故y|(ax+1),即ax=y-1(mod y)。显然由x,y互质得a取1~y-1中不同数时mod y下是不同的,于是必然存在a,使等式成立。
对于2,即ax<n-1,又a*x<=(y-1)x=xy-y<=n-y<n-1,故成立。
综上,有解。
那么构造就容易了,x,y取最小的两个不同的质因子即可。必然可以取一个小于sqrt(n)的y,然后在1~y-1内枚举判断,效率O(sqrt(n))。
CF1089F Fractions
最新推荐文章于 2023-04-20 19:36:02 发布