2017.8.18总结2-恭介的法则

https://61.142.113.109/senior/#main/show/3456
事实上,这道题的难度还是很大的,因为数据跨越那么大,说明30~60分是一个跨越,60~100是另一个跨越,我考试时只想到了暴力,30分,不知道为什么1/i+1/j=1/n!按照这个公式暴力错了。。。可能是某个地方打错了吧,于是我决定去推这个公式

1/i+1/j=1/n!
->(1/i+1/j)*ij=ij/n!
->i+j=ij/n!
->(i+j)*n!=ij
我就是用这个式子去做30分的。。。
然后要想60分,接着推。
(i+j)*n!=ij
->i*n!+j*n!=ij
->j*n!=i(j-n!)
->j*n!/j-n!=i
我们知道i>0且为正整数,所以
j*n!/j-n!>0,且j-n! | j*n!
且j-n!>0即j>n!
因为j>n!,所以,我们设j=n!+k
原式即为=(n!*(n!+k))/n!+k-n!
->(n!^2+n!k)/k
因为n!k是可以整除k的,所以呢n!^2也是可以整除k的,这样才满足整个式子都能整除k。
所以,很显然了,k是n!^2的因子。
因子定理为(q1+1)*(q1+1)…(qn+1)=因子的个数。
q为质因子的可用的个数,加1是因为可以选0个
所以线性筛法求出每个数的最小的能被整除的素数,然后再算出这些素数的个数,再高精度乘法加压位,最后再来个常数优化,常数优化就是先用一个变量去乘,乘到一定数量了就去高精度,这样可以省下大量时间。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值