题目
https://jzoj.net/senior/#contest/show/2100/1
小结
这道题有点难,刘犇比赛竟然A了!太6了。
这是一道数论题。
本质上就是求
1x+1y=1n!
。
我们把它变成:
x+yxy=1n!
然后都取倒数,变成
xyx+y=n!
把“x+y”移过去:变成
xy=n!(x+y)
乘进去:变成
xy=n!∗x+n!∗y
移项:
xy−n!∗x=n!∗y
=>
x(y−n!)=n!∗y
;
然后再除过去:
x=n!yy−n!
;
∵x是整数
∴
① yn!|y-n!
②y>n!
于是我们假设y=n!+k;
那么式子就变成了:
n!(n!+k)(n!+k)−n!
=>
(n!)2+n!kk
因为k肯定整除n!k,
所以矛头就指向了
(n!)2
∴要使等式成立,
k|(n!)2
所以我们知道k一定是
(n!)2
的一个因子。
所以,题目转化为了求n!的因子个数。
我们知道x的因子个数=(q1+1)(q2+1)(q3+1)…(qn+1)
qi是x分解质因数的每个质因数的指数。
怎么证呢?
很简单,因为每个质因数可以取0次,可以取1次….可以取qi次,所以总方案数就是全部乘起来,加1是因为算上0的情况。
我们就只需要找一到n之内所有数的质因子出现的次数,然后每个依次*2(因为是平方),再用高精度乘一乘,就好啦。(PS:当然还有一些常数优化)