数论——51nod1040 最大公约数之和
来源:互联网 发布:局域网监控软件 编辑:程序博客网 时间:2024/05/20 09:08
题面:51nod1040
这篇题解只是为了纪念一下好久没有刷数论题的我终于又刷了一道数论水题的题解
初一看没有思路(我是数学蒟蒻QAQ)后来发现可以算贡献。。。
我们发现本质上是让我们求
那么如何求
然后发现
然后就大力求phi就可以了。。。(顺便唤醒我求单点phi的记忆)
#include <cstdio>#include <algorithm>#include <cmath>#include <cstring>#include <iostream>#include <ctime>#include <map>#include <queue>#include <cstdlib>#include <string>#include <climits>#include <set>#include <vector>#define int long longusing namespace std;inline int read(){ int k=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){k=k*10+ch-'0';ch=getchar();} return k*f;}inline int phi(int x){ int ans=x; for(int i=2;i*i<=x;i++)if(x%i==0){ ans=ans/i*(i-1); while(x%i==0)x/=i; } if(x>1)ans=ans/x*(x-1); return ans;}signed main(){ int n=read(),ans=0; if(n==1)return puts("1")&0; for(int i=1;i*i<=n;i++)if(n%i==0){ if(i!=n/i)ans+=phi(i)*(n/i)+phi(n/i)*i; else ans+=phi(i)*(n/i); } printf("%lld",ans); return 0;}
阅读全文
1 0
- 数论——51nod1040 最大公约数之和
- 51nod1040最大公约数之和
- [51nod1040]最大公约数之和
- 51nod1040 最大公约数之和 (欧拉函数 )
- 【51nod1040】【最大公约数之和】【欧拉函数】
- 51Nod1040 最大公约数之和 欧拉函数
- 【欧拉函数】51Nod1040[最大公约数之和]题解
- 数论——51nod1188 最大公约数之和 V2
- 51 NOD 1188 最大公约数之和 V2(基础数论)
- 51NOD 1040 1040 最大公约数之和 数论 欧拉函数
- 51nod1040
- [数论]数论的基础知识——最大公约数、最小公倍数
- 数论——最大公约数和最小公倍数算法
- 数论——最大公约数和最小公倍数
- 51nod 1040:最大公约数之和
- [51nod]1040 最大公约数之和
- [51nod1188]最大公约数之和 V2
- 【51Nod 1040】最大公约数之和
- HDOJ HDU 1069 Monkey and Banana
- HDU6195 cable cable cable
- bzoj3993: [SDOI2015]星际战争
- POJ1741 Tree (树上点分治/treap+启发式合并)
- 搭建风控系统道路上踩过的坑04-风险分析
- 数论——51nod1040 最大公约数之和
- Java中用异或交换值
- 关于全局鼠标钩子卡的原因分析
- 【2017 ACM/ICPC Asia Regional Shenyang Online 1005】hdu 6198 number number number
- 程序1
- 一篇文章搞懂DOM
- 《Deep Filter Banks for Texture Recognition and Segmentation》
- Redis集群方案:高性能
- 基础代码-线段