【51Nod 1363】最小公倍数之和
来源:互联网 发布:淘宝免费注册 编辑:程序博客网 时间:2024/06/04 17:56
Description
给出一个n,求1-n这n个数,同n的最小公倍数的和。
例如:n = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30,6,加在一起 = 66。
由于结果很大,输出Mod 1000000007的结果。
Solution
做这道题,这是历经波澜!
设
所以
但是直接这样打只会对一半的点,时间复杂度不够大。
现在可以考虑,顺着质因数去线性算
但是还可以转化一下公式。
设
然后可以快速分解,打了一下不过由于不优美烂了。
然后想了一下。
预处理出根号范围内的质数,然后分解质因数,本来是根号的速度的,但是根号的那么范围
Code
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int mo=1000000007,ni2=500000004;typedef long long ll;ll i,j,k,l,t,n,m,cas;ll ans,p[50000],ph[50007],pp[50007];ll zhi[50007];bool bz[5000001];ll qsm(ll x,ll y){ ll z=1; while(y){ if(y&1)z=z*x%mo; x=x*x%mo; y/=2; } return z;}ll doing(ll x,ll y){ ll o=(qsm(x,2*y+1)-x+mo)%mo; o=o*qsm(x%mo+1,mo-2)%mo; o=(o+mo)%mo; return o;}int main(){ fo(i,2,40000){ if(!bz[i])zhi[++zhi[0]]=i; fo(j,1,zhi[0]){ t=zhi[j]*i;if(t>40000)break;bz[t]=1; if(!(i%zhi[j])){;break;} } } for(scanf("%lld",&cas);cas;cas--){ scanf("%lld",&n); ll x=n;pp[0]=0; fo(i,1,zhi[0]){ if(zhi[i]*zhi[i]>x)break; if(x%zhi[i]==0)pp[++pp[0]]=zhi[i],p[pp[0]]=0; while(x%zhi[i]==0)x/=zhi[i],p[pp[0]]++; } if(x>1)pp[++pp[0]]=x,p[pp[0]]=1; ans=1; fo(i,1,pp[0]){ ans=ans*(doing(pp[i],p[i])+1)%mo; } ans=ans*n%mo*ni2%mo; ans=(ans+n%mo*ni2%mo)%mo; printf("%lld\n",ans); }}
2 0
- 51 nod 1363 最小公倍数之和
- 【51Nod 1363】最小公倍数之和
- 51nod 1363 最小公倍数之和
- 51Nod-1363-最小公倍数之和
- 最小公倍数之和 V2 51Nod
- [杜教筛] 51Nod 1238 最小公倍数之和 V3
- 【51NOD 1238】最小公倍数之和 V3
- 【51nod 1190】最小公倍数之和 V2
- 51nod 1238 最小公倍数之和 V3
- 51nod 1190 最小公倍数之和V2
- 51nod 1238 最小公倍数之和 V3
- 51Nod-1238-最小公倍数之和 V3
- 51nod 1238 最小公倍数之和 V3
- 【51nod1363】最小公倍数之和
- [51nod1238]最小公倍数之和
- 51nod 1190 最小公倍数之和 V2(莫比乌斯反演)
- [莫比乌斯反演 积性函数前缀和] 51Nod 1190 最小公倍数之和 V2
- 51nod 1190 最小公倍数之和 V2(莫比乌斯反演)
- codeforces 364A
- (Java)LeetCode-55. Jump Game
- 各种识别率的问题
- Java 集合框架分析:Set(1)
- HDU 2819 Swap 【二分图匹配 交换方法】
- 【51Nod 1363】最小公倍数之和
- Android面试经验 -- 乐视
- BinarySearch(二分查找)
- 认识css布局模式(流动模式下的块状元素和内联元素)
- 分块练习 B
- 电子市场总结(一)
- Linux字符设备
- 3.消息类型(微信公众号开发实战)
- windows下安装python numpy+scipy+matlotlib+scikit-learn等流行库