博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[SDOI2012]Longge的问题
阅读量:6788 次
发布时间:2019-06-26

本文共 1769 字,大约阅读时间需要 5 分钟。

这道题是数论题,所以需要一些变形。

考虑求所有$\gcd$的和,我们采用分组求解,也就是根据$i$和$N$的$\gcd$的值进行分组。

$$\begin{array}{ll}&\sum\limits_{i=1}^N\gcd(i,N) \\ = &\sum\limits_{d|n}d\sum\limits_{i=1}^N[\gcd(i,N)=d]\\=&\sum\limits_{d|n}d\sum\limits_{i=1}^{\frac nd}[\gcd(i,\frac Nd)=1]\\=&\sum\limits_{d|n}d\varphi(\frac Nd) \end{array}$$

于是就可以将复杂度降成根号级别的了。

然后因为$\varphi$的参数过大,不能用$\text{Euler}$筛,所以暴力用$O(\sqrt{N})$的复杂度判断。

又因为因数数量远小于$\sqrt{N}$,所以总复杂度可以承受。

这里作者比较懒,又用了根号判素数,复杂度会变大,但仍然可以承受。

1 #include 
2 3 using namespace std; 4 5 #define re register 6 #define rep(i, a, b) for (re int i = a; i <= b; ++i) 7 #define srep(i, a, b, c) for (re int i = a; i <= b; c) 8 #define repd(i, a, b) for (re int i = a; i >= b; --i) 9 #define maxx(a, b) a = max(a, b);10 #define minn(a, b) a = min(a, b);11 #define LL long long12 #define INF (1 << 30)13 14 inline LL read() {15 LL w = 0, f = 1; char c = getchar();16 while (!isdigit(c)) f = c == '-' ? -1 : f, c = getchar();17 while (isdigit(c)) w = (w << 3) + (w << 1) + (c ^ '0'), c = getchar();18 return w * f;19 }20 21 const int maxn = 1e5 + 5;22 23 bool prime(LL x) {24 if (x <= 1) return false;25 rep(i, 2, sqrt(x))26 if (!(x % i)) return false;27 return true;28 }29 30 LL phi(LL x) {31 LL res = x;32 rep(i, 1, sqrt(x))33 if (!(x % i)) {34 if (prime(i)) res = res * (i-1) / i;35 if (i*i != x && prime(x/i)) res = res * (x/i-1) / (x/i);36 }37 return res;38 }39 40 LL n, ans = 0;41 42 int main() {43 n = read();44 rep(i, 1, sqrt(n))45 if (!(n % i)) {46 ans += n / i * phi(i);47 if (i * i != n) ans += i * phi(n / i);48 }49 printf("%lld", ans);50 return 0;51 }

 

转载于:https://www.cnblogs.com/ac-evil/p/10372219.html

你可能感兴趣的文章
Kalman原理(很详细)本文转载自《学习OpenCV》清华大学出版社 于诗琪 刘瑞祯 译...
查看>>
linux/centos6 系统时间同步 同步系统时间 ntpdate
查看>>
第一次开启51CTO博客
查看>>
升职还需犹豫?
查看>>
我的友情链接
查看>>
CMD框变小字体显示乱码
查看>>
正则总结:JavaScript中的正则表达式
查看>>
HAProxy 详解
查看>>
7.1文件查找之find命令详解
查看>>
Linux系统管理-(11)-网络配置ifcfg家族
查看>>
memset()
查看>>
Jquery Ajax二次封装(部分转载)
查看>>
android studio3 logcat无日志的问题
查看>>
我的友情链接
查看>>
tinyxml使用
查看>>
mariadb
查看>>
iOS 时间与日期处理
查看>>
Linux中yum网络服务器与本地服务器的安装
查看>>
[2013.12.28更新:构建教程,支持CB2、CT] 构建自己的Debian Linux
查看>>
flume+kafka+storm运行实例
查看>>