【数论】疯狂 LCM(P1891)
生活随笔
收集整理的這篇文章主要介紹了
【数论】疯狂 LCM(P1891)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
正題
P1891
題目大意
有T個(gè)詢問,每個(gè)詢問給出n,求∑i=1nlcm(i,n)\sum_{i=1}^nlcm(i,n)i=1∑n?lcm(i,n)
解題思路
∑i=1nlcm(i,n)\sum_{i=1}^nlcm(i,n)i=1∑n?lcm(i,n)
n∑i=1ni/gcd(i,n)n\sum_{i=1}^ni/gcd(i,n)ni=1∑n?i/gcd(i,n)
n∑d∣n1d∑i=1ni[gcd(i,n)=d]n\sum_{d|n}\frac{1}ze8trgl8bvbq\sum_{i=1}^ni\ [gcd(i,n)=d]nd∣n∑?d1?i=1∑n?i?[gcd(i,n)=d]
對互質(zhì)的數(shù)求和
n∑d∣n1d×φ(nd)n2n\sum_{d|n}\frac{1}ze8trgl8bvbq\times \frac{\varphi(\frac{n}ze8trgl8bvbq)n}{2}nd∣n∑?d1?×2φ(dn?)n?
n∑d∣nφ(d)×d2n\sum_{d|n}\frac{\varphi(d)\times d}{2}nd∣n∑?2φ(d)×d?
code
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define ll long long #define N 1000100 using namespace std; ll T,n,w,p[N],prime[N],phi[N],g[N]; const ll MX=1e6; void work() {phi[1]=1;for(ll i=2;i<=MX;++i){if(!p[i]){prime[++w]=i;phi[i]=i-1;}for(ll j=1;j<=w&&i*prime[j]<=MX;++j){p[i*prime[j]]=1;if(i%prime[j]==0){phi[i*prime[j]]=phi[i]*prime[j];break;}else phi[i*prime[j]]=phi[i]*(prime[j]-1);}}for(ll i=1;i<=MX;++i)for(ll j=1;i*j<=MX;++j)g[i*j]+=(i==1?1:i*phi[i]/2);//1只有一個(gè)數(shù)return; } int main() {work();scanf("%lld",&T);while(T--){scanf("%lld",&n);printf("%lld\n",n*g[n]);}return 0; }總結(jié)
以上是生活随笔為你收集整理的【数论】疯狂 LCM(P1891)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想要怒放的生命什么歌 怒放的生命歌词
- 下一篇: 能玩3A游戏的PC掌机可以玩3A的掌机