题面很简单,就是求$ \sum^{n}_{i=1} gcd(i,n) $
首先对所求式子进行变形
$$ \sum^{n}_{i=1} gcd(i,n)=\sum_{d|n} d*(\sum^n_{i=1}gcd(i,n)==d) $$
而$ \sum^n_{i=1} (gcd(i,n)==d)=\sum^{\frac{n}{d}}_{i=1} [gcd(i,\frac{n}{d})==1]=\varphi(\frac{n}{d}) $
求$ \varphi(\frac{n}{d}) $可以在$ O(logn) $的时间内完成
同时枚举n的约数也可以在$ O(logn) $的时间内完成
因此此问题得到了解决
#include#include<string> #include<string.h> #include #include #include #include #include