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

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

Description

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

Input

一个整数,为N。

Output

一个整数,为所求的答案。

Sample Input

6

Sample Output

15

HINT

【数据范围】

对于60%的数据,0<N<=2^16。
对于100%的数据,0<N<=2^32。

题解

求 $$\sum_{i = 1}^N gcd(i, N)$$

用惯用的套路我们枚举 $N$ 的因子  $$\sum_{d \mid N} d \cdot \sum_{i = 1}^{ \frac{N}{d} } \left[gcd \left( \frac{N}{d} , i \right) = 1\right]$$

化简为 $$\sum_{d \mid N} d \cdot \varphi \left( \frac{N}{d} \right)$$

欧拉函数直接用 $\varphi(n) = n \cdot \prod_{i = 1}^k \left(1-\frac{1}{p_i} \right)$ 来求。

1 //It is made by Awson on 2018.1.12 2 #include 
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 #include
15 #define LL long long16 #define Max(a, b) ((a) > (b) ? (a) : (b))17 #define Min(a, b) ((a) < (b) ? (a) : (b))18 #define Swap(a, b) ((a) ^= (b), (b) ^= (a), (a) ^= (b))19 using namespace std;20 void read(LL &x) {21 char ch; bool flag = 0;22 for (ch = getchar(); !isdigit(ch) && ((flag |= (ch == '-')) || 1); ch = getchar());23 for (x = 0; isdigit(ch); x = (x<<1)+(x<<3)+ch-48, ch = getchar());24 x *= 1-2*flag;25 }26 void write(LL x) {27 if (x > 9) write(x/10);28 putchar(x%10+48);29 }30 31 LL n, m, ans;32 33 LL phi(LL x) {34 LL ans = x;35 for (LL i = 2; i <= m; i++) {36 if (x%i) continue;37 ans = ans*(i-1)/i;38 while (!(x%i)) x /= i;39 }40 if (x > 1) ans = ans*(x-1)/x;41 return ans;42 }43 void work() {44 read(n); m = sqrt(n);45 for (LL i = 1; i <= m; i++) {46 if (n%i) continue;47 ans += i*phi(n/i);48 if (i*i < n) ans += n/i*phi(i);49 }50 write(ans);51 }52 int main() {53 work();54 return 0;55 }

 

转载于:https://www.cnblogs.com/NaVi-Awson/p/8276082.html

你可能感兴趣的文章
redis——django使用管道实现事务操作
查看>>
git在terminal中自动补全
查看>>
ASP.NET 后台页面无法识别服务器控件ID
查看>>
js关于变量作为if条件的真假问题
查看>>
WPF/Silverlight为什么要使用Canvas.SetLeft()这样的方法?
查看>>
Wireshark-win64-2.4.3
查看>>
《Unity游戏开发实战》pdf
查看>>
jsday24
查看>>
(二十)WebGIS中图层树功能的设计和实现
查看>>
ORA-10456:cannot open standby database;media recovery session may be in process
查看>>
session服务器Nginx+Tomcat+Memcached集群Session共享
查看>>
javascript的时间描述图怎么写
查看>>
Maximum Gap 164
查看>>
Robot Framework Share 4
查看>>
【LeetCode】155. Min Stack
查看>>
【LeetCode】214. Shortest Palindrome
查看>>
现有资源和jsapi的融合一种方式
查看>>
UICollectionViewController的简单使用及一些注意点(json)
查看>>
Vue.js 源码分析(十三) 基础篇 组件 props属性详解
查看>>
Ubuntu系统升级内核方法
查看>>