P2303 [SDOI2012] Longge 的问题

思路

我们显然可以枚举每一对数的gcdgcdgcd进行求解,进而我们有如下推导:

=>∑i=1ngcd(i,n)=>\sum _{i = 1} ^ {n} gcd(i, n)=>i=1∑n​gcd(i,n)

=>∑d∣nd∑i=1n(gcd(i,d)==d)=>\sum _{d \mid{n}} d \sum _{i = 1} ^ {n} (gcd(i, d) == d)=>d∣n∑​di=1∑n​(gcd(i,d)==d)

=>∑d∣nd∑i=1nd(gcd(i,d)==1)=>\sum _{d \mid n}d \sum _{i = 1}^{\frac {n} {d}}(gcd(i, d) == 1)=>d∣n∑​di=1∑dn​​(gcd(i,d)==1)

=>∑d∣ndϕ(nd)=>\sum _{d \mid n}d\phi(\frac{n}{d})=>d∣n∑​dϕ(dn​)

这就简单了,只要枚举nnn的所有因子就行。

代码

/*Author : lifehappy
*/
#pragma GCC optimize(2)
#pragma GCC optimize(3)
// #include <iostream>
// #include <algorithm>
// #include <stdlib.h>
// #include <cmath>
// #include <vector>
// #include <cstdio>
#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define endl '\n'using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;const double pi = acos(-1.0);
const double eps = 1e-7;
const int inf = 0x3f3f3f3f;inline ll read() {ll f = 1, x = 0;char c = getchar();while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();}while(c >= '0' && c <= '9') {x = (x << 1) + (x << 3) + (c ^ 48);c = getchar();}return f * x;
}void print(ll x) {if(x < 10) {putchar(x + 48);return ;}print(x / 10);putchar(x % 10 + 48);
}ll eular(ll n) {ll ans = n;for(ll i = 2; i * i <= n; i++) {if(n % i == 0) {while(n % i == 0) n /= i;ans = ans / i * (i - 1);}}if(n != 1) ans = ans / n * (n - 1);return ans;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);ll n = read(), Ans = 0;for(ll i = 1; i * i <= n; i++) {if(n % i == 0) {Ans += i * eular(n / i);if(i * i != n) {Ans += n / i * eular(i);}}}printf("%lld\n", Ans);return 0;
}

P2303 [SDOI2012] Longge 的问题相关推荐

  1. P2303 [SDOI2012] Longge(数论/欧拉函数)

    P2303 [SDOI2012] Longge 一道看似非常基础的数论题,但是蕴含了非常多的知识,求解 ∑i=1ngcd(i,n)\sum_{i=1}^ngcd(i,n) i=1∑n​gcd(i,n) ...

  2. bzoj2705(洛谷P2303): [SDOI2012]Longge的问题 (欧拉函数)

    题意 求 ∑i=1ngcd(i,n)∑i=1ngcd(i,n)\sum\limits_{i=1}^ngcd(i,n) 题解 这题-真的要写一下了- 其实吧,结果就是 ∑i|ni∗φ(ni)∑i|ni∗ ...

  3. bzoj 2705: [SDOI2012]Longge的问题(欧拉函数)

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 3077  Solved: 1914 [Submit ...

  4. 【洛谷 P2303】 [SDOi2012]Longge的问题 (欧拉函数)

    题目链接 题意:求\(\sum_{i=1}^{n}\gcd(i,n)\) 首先可以肯定,\(\gcd(i,n)|n\). 所以设\(t(x)\)表示\(gcd(i,n)=x\)的\(i\)的个数. 那 ...

  5. bzoj 2705: [SDOI2012]Longge的问题——欧拉定理

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

  6. BZOJ2705 [SDOI2012]Longge的问题 欧拉函数

    Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 3874  Solved: 2469 [Submit][Status][Discuss] Descrip ...

  7. 【bzoj2705】[SDOI2012]Longge的问题 欧拉函数

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

  8. 【P2303】Longge的问题

    题目大意:求\[\sum\limits_{i=1}^ngcd(n,i)\] 题解:发现 gcd 中有很多是重复的,因此考虑枚举 gcd. \[\sum\limits_{i=1}^ngcd(n,i)=\ ...

  9. SP5971 LCMSUM - LCM Sum

    SP5971 LCMSUM - LCM Sum 思路 ∑i=1nlcm(i,n)\sum_{i = 1}^{n}lcm(i, n)i=1∑n​lcm(i,n) =>∑i=1ningcd(i,n) ...

最新文章

  1. LeetCode 458. Poor Pigs--智力题「小白鼠试毒」--C++,Python解法
  2. debian/ubuntu 安装和使用perf
  3. poj-1031-fence(不是我写的,我只是想看着方便)
  4. Spring事务管理TransactionManager
  5. 生产环境中,RabbitMQ 持续积压消息不进行ack ,发生什么了?
  6. 接口协作--apipost接口协作工具
  7. PHP团队 编码规范 代码样式风格规范
  8. 高并发服务器逻辑处理瓶颈,如何解决?
  9. 【图像隐写】基于matlab GBT+SVD数字水印嵌入与提取【含Matlab源码 1668期】
  10. Angular动态注册组件(controller,service...)
  11. 从Python.org下载Python安装包下载很慢
  12. 一个SQL SERVER查询分析器非常好用的工具
  13. java爬取app_Java实现爬虫给App提供数据(Jsoup 网络爬虫)
  14. java生成随机数组_Java 生成随机数
  15. Quartz表达式校验方法
  16. 数独游戏-安卓版源代码和分析。
  17. 常见中文字体英文名称以及windows默认字体类型
  18. 第1章 Kotlin是什么
  19. 频率f,角频率Ω和数字频率w的物理含义
  20. 中国都有哪些顶级优秀的程序员?

热门文章

  1. 球体表面积原来还可以这么求!
  2. 越绿自己,就会越强?
  3. 一击即中的表白方式,学会了吗?
  4. 一招搞定高等数学! | 今日最佳
  5. Android 页面布局xd,Adobe XD强大的布局系列工具 助你事半功倍
  6. 10以内的分解与组成怎么教_狗狗酷炫的飞盘游戏怎么玩?分解步骤教你快速学会...
  7. python3多线程queue_Python多线程(3)——Queue模块
  8. 摄像头预览左右翻转_轻薄翻转触控本里的高性能机型:惠普ENVY x360 13评测
  9. python如何安装扩展库openpyxl和numpy_Python第三方库之openpyxl(2)
  10. php mysql explain_MySQL Explain详解