传送门

\[\sum_{i=1}^{n}\gcd(i,n)
\]

考虑枚举所有可能的gcd,可以发现这一定是\(n\)的约数,当\(\gcd(i,n)=x\)时,\(gcd(\frac{i}{x},\frac{n}{x})=1\),可以知道gcd为\(x\)的数的个数就是\(\varphi_{\frac{n}{x}}\)

所以要求的是$$\sum_{d|n}d*\varphi_{\frac{n}{d}}$$

求\(\varphi\)的话只要像筛素数那样筛出来救星了

#include<bits/stdc++.h>
#define il inline
#define re register
#define LL long long
#define db double
#define ldb long double
#define eps (1e-7) using namespace std;
il LL rd()
{
LL x=0,w=1;char ch=0;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
LL n,prm[20][2],p[10000],tt,tmd,a1;
void d1(int o,LL s)
{
if(o>tt) {p[++tmd]=s;return;}
for(int i=0;i<=prm[o][1];i++)
{
d1(o+1,s);
s*=prm[o][0];
}
}
int main()
{
n=rd();
LL sn=sqrt(n),bb=n;
for(LL i=2;i<=sn&&bb;i++)
{
if(bb%i==0)
{
prm[++tt][0]=i;
while(bb%i==0) bb/=i,++prm[tt][1];
}
}
if(bb>1) prm[++tt][0]=bb,prm[tt][1]=1;
d1(1,1);
sort(p+1,p+tmd+1);
map<LL,LL> phi;
phi[1]=1,tt=0;
for(LL i=2;i<=tmd;i++)
{
if(phi.find(p[i])==phi.end()) phi[p[i]]=p[i]-1,++tt;
for(int j=1;j<=tt&&p[i]*prm[j][0]<=n;j++)
{
phi[p[i]*prm[j][0]]=phi[p[i]]*1ll*(prm[j][0]-1);
if(p[i]%prm[j][0]==0) {phi[p[i]*prm[j][0]]+=phi[p[i]];break;}
}
}
for(LL i=1;i<=tmd;i++) a1=(a1+phi[p[i]]*(n/p[i]));
printf("%lld ",a1);
return 0;
}

luogu P2303 [SDOi2012]Longge的问题的更多相关文章

  1. 洛谷 P2303 [SDOi2012]Longge的问题 解题报告

    P2303 [SDOi2012]Longge的问题 题目背景 SDOi2012 题目描述 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数\(N\),你需要 ...

  2. 洛谷P2303 [SDOi2012]Longge的问题

    题目背景 SDOi2012 题目描述 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). ...

  3. P2303 [SDOi2012]Longge的问题

    题目描述 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). 输入输出格式 输入格式: 一 ...

  4. 洛谷P2303 [SDOi2012] Longge的问题 数论

    看懂了题解,太妙了TT但是想解释的话可能要很多数学公式打起来太麻烦了TT所以我就先只放代码具体推演的过程我先写在纸上然后拍下来做成图片放上来算辣quq 好的那我先滚去做题了做完这题就把题解放上来.因为 ...

  5. 【洛谷题解】P2303 [SDOi2012]Longge的问题

    题目传送门:链接. 能自己推出正确的式子的感觉真的很好! 题意简述: 求\(\sum_{i=1}^{n}gcd(i,n)\).\(n\leq 2^{32}\). 题解: 我们开始化简式子: \(\su ...

  6. P2303 [SDOI2012]Longge的问题 我傻QwQ

    莫比乌斯反演学傻了$QwQ$ 思路:推式子? 提交:2次 错因:又双叒叕没开$long\space long$ 题解: $\sum_{i=1}^n gcd(i,n)$ $=\sum_{d|n}d\su ...

  7. [bzoj]2705: [SDOI2012]Longge的问题[数论][数学][欧拉函数][gcd]

    [bzoj]P2705 OR [luogu]P2303 Longge的问题 Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需 ...

  8. BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2553  Solved: 1565[Submit][ ...

  9. BZOJ 2705: [SDOI2012]Longge的问题

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2554  Solved: 1566[Submit][ ...

随机推荐

  1. Java之反射举例

    package reflection; import bean.User; public class ReflectionDemo { public static void main(String[] ...

  2. Classification with DeepLearning

    分类网络总结 https://github.com/handong1587/handong1587.github.io/blob/master/_posts/deep_learning/2015-10 ...

  3. POJ 1661 (Help Jimmy )

    Help Jimmy Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13669   Accepted: 4541 Descr ...

  4. ACM-ICPC 2018 焦作赛区网络预赛 E Jiu Yuan Wants to Eat (树链剖分+线段树)

    题目链接:https://nanti.jisuanke.com/t/31714 题意:给你一棵树,初始全为0,有四种操作: 1.u-v乘x    2.u-v加x   3. u-v取反  4.询问u-v ...

  5. java监控工具VisualVM

    java监控工具VisualVM https://visualvm.github.io/ https://visualvm.github.io/documentation.html https://h ...

  6. MT【26】ln(1+x)的对数平均放缩

    评:1.某种程度上$ln(1+x)\ge \frac{2x}{2+x}$是最佳放缩. 2.这里涉及到分母为幂函数型的放缩技巧,但是不够强,做不了这题.

  7. 自学Python6.3-内置模块(1)

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

  8. 【BZOJ3512】DZY Loves Math IV(杜教筛)

    [BZOJ3512]DZY Loves Math IV(杜教筛) 题面 BZOJ 求 \[\sum_{i=1}^n\sum_{j=1}^m\varphi(ij)\] 其中\(n\le 10^5,m\l ...

  9. cf500E New Year Domino (倍增)

    先用线段树处理出推倒某一个后能覆盖到的最右端的位置R(绝对不能是最右边的那个骨牌,因为有可能右面的很短,左面的巨长(R不随L单调),后面算花费又需要用到这个位置),之后可以花费R到第一个比R大的左端点 ...

  10. 有屏幕的地方就有BadApple!!

    Bad Apple!! MV仅由黑白两色组成,如此高的对比度致使它可以在非常廉价由单片机驱动的屏幕上播放,所以,就有了“有屏幕的地方就有Bad Apple!” 原MV链接,没有看过的同学先看一眼吧—— ...