2705: [SDOI2012]Longge的问题

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 3154  Solved: 1968
[Submit][Status][Discuss]

Description

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

Input

一个整数,为N。

Output

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

Sample Input

6

Sample Output

15
 
枚举n的因子,对于一个因子x,求与n只有这一个因子x的数目,显然如果暴力的话就是for(int i=x;i<=n;i+=x)然后判断每个i是否与n只有一个因子,从而求得数目然后乘上x。
可以用欧拉函数简化这一过程,因子为x,那么与他成对那个就是y=n/x。我们只需求出小于y并与y互质的数目就可以了,因为与y互质,那么与k*y(显然ky可以等于n)仍然互质,也就是说找出来的每个z。必定满足gcd(n,z)==1且z*x<n,那么gcd(n,z*x)肯定就只有x这一个因子了,从而简化了过程
 
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
LL phi(LL x)
{
LL ans=x;
for(LL i=; i*i<=x; ++i)
{
if(x%i==) ans=ans*(i-)/i;
while(x%i==) x/=i;
}
if(x>) ans=ans*(x-)/x;
return ans;
}
int main()
{
LL n;
scanf("%lld",&n);
LL ans=;
for(LL i=sqrt(n); i>=; --i)
{
if(n%i==)
{
ans+=phi(n/i)*i;
if(i*i!=n) ans+=phi(i)*(n/i);
}
}
printf("%lld\n",ans);
}

最新文章

  1. Ie8+,强制默认使用ie8模式
  2. 使用Fiddler对Android或者iOS设备进行抓包
  3. (原创)Python文件与文件系统系列(4)——文件描述字操作
  4. heritrix
  5. js基础例子购物车升级版(未优化版)
  6. ES6新特性之Symbol使用细节
  7. vmvare入门(1)使用移动,不要使用复制
  8. &lt;ROS&gt; message_filters 对齐多种传感器数据的时间戳
  9. 01 前言/基础设施 - DevOps之路
  10. Docker防主机意外断电导致容器实例无法驱动解决方案:UPS || write barrier || 上btrfs定期snapshot
  11. Django框架之第三篇模板语法(重要!!!)
  12. PyCharm选择性忽略PEP8代码风格警告信息
  13. TensorFlow 运行模型--会话(Session)
  14. AI 随机梯度下降(SGD)
  15. 十一. Python基础(11)—补充: 作用域 & 装饰器
  16. Redis 集群配置
  17. Python之Scrapy遇见个坑
  18. ie高版本浏览器不支持velocity的问题解决
  19. [CISCO] 交换机间链路聚合端口聚合
  20. Effective C++笔记(二):构造/析构/赋值运算

热门文章

  1. CentOS7虚拟机安装vmtools
  2. 使用cpplint检测代码规范
  3. keep-alive的深入理解与使用(配合router-view缓存整个路由页面)
  4. The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 XKC's basketball team
  5. 【原创】Linux Mutex机制分析
  6. 面试中的volatile关键字
  7. Https双向验证与Springboot整合测试-人来人往我只认你
  8. weak_ptr
  9. Programming Languages_04 Deferred Substitution
  10. JWT安全问题