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。

/*
想了很长时间,实在没想出怎么做。
正解貌似很简单,设k=gcd(i,n),那么1=gcd(i/k,n/k),那么如果我们知道了K,可以用欧拉函数解出i的个数,把所有i的个数加起来就行了,
至于枚举K,就是枚举n的因数。
*/
#include<cstdio>
#include<iostream>
#define lon long long
using namespace std;
lon n,ans;
lon oula(lon x){
lon res=x,a=x;
for(lon i=;i*i<=a;i++){
if(a%i==){
res-=res/i;//res=res*(1-1/i)
while(a%i==) a/=i;
}
}
if(a>) res-=res/a;
return res;
}
int main(){
cin>>n;
for(lon i=;i*i<=n;i++){
if(n%i) continue;
ans+=oula(n/i)*i;
if(i*i!=n) ans+=oula(i)*(n/i);
}
cout<<ans;
}

最新文章

  1. C 标准库系列之locale.h
  2. UVALive 6255 Kingdoms --状态搜索
  3. C语言学习笔记 -冒泡排序
  4. Jessica&#39;s Reading Problem
  5. Nginx、LVS及HAProxy负载均衡软件的优缺点详解
  6. css3的loadding效果
  7. YouKu iOS笔试题一
  8. 编程思想之——&quot;人是活的,程序是死的&quot;
  9. Python中类的方法属性与方法属性的动态绑定
  10. 分享一个低配VPS下运行的mysql配置文件
  11. FreeMarker 快速入门
  12. 【KMP模板】简单写个KMP~
  13. Python selenium 一个节点两个关联input
  14. MysqL主主复制_模式之日志点复制
  15. 初识JavaScript闭包
  16. python3 模拟鼠标和键盘操作
  17. sqlserver 存储过程返回游标的处理
  18. puppeteer新手遇到的坑
  19. Linux记录-分区(df/fdisk/mount/umount/fuser)
  20. Kubernetes之解决从k8s.gcr.io拉取镜像失败问题

热门文章

  1. MFC技术积累——基于MFC对话框类的那些事儿3
  2. (转)MyBatis框架的学习(二)——MyBatis架构与入门
  3. 一个小笔记(5):A*算法
  4. CPP-基础:函数指针,指针函数,指针数组
  5. IE(IE6/IE7/IE8)支持HTML5标签--20150216
  6. str.format输出乱码
  7. 【线段树】uoj#228. 基础数据结构练习题
  8. 【网络流】[USACO4.2]草地排水Drainage Ditches
  9. (36)zabbix Maintenance维护周期
  10. Linux-MySQL基本命令-SQL语句