2705: [SDOI2012]Longge的问题

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 2507  Solved: 1531
[Submit][Status][Discuss]

Description

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

Input

一个整数,为N。

Output

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

Sample Input

6

Sample Output

15
 
 
 
 
【题解】
 
设gcd(m,n)=k的m的个数为s(k),k为n的约数
 
则ans=sigma(k*s(k))
 
由gcd(m,n)=k,gcd(m/k,n/k)=1,所以s(k)=phi(n/k)
 
时间复杂度O(nlogn)
 
 /*************
bzoj 2705
by chty
2016.11.4
*************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n,m,ans;
inline ll read()
{
ll x=,f=; char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-; ch=getchar();}
while(isdigit(ch)) {x=x*+ch-''; ch=getchar();}
return x*f;
}
ll phi(ll x)
{
ll sum=x;
for(ll i=;i<=m;i++)
{
if(x%i==) sum=sum/i*(i-);
while(x%i==) x/=i;
}
if(x>) sum=sum/x*(x-);
return sum;
}
int main()
{
freopen("cin.in","r",stdin);
freopen("cout.out","w",stdout);
n=read();
m=(ll)sqrt(n*1.0);
for(ll i=;i<=m;i++)
if(n%i==)
{
ans+=i*phi(n/i);
if(i*i<n) ans+=(n/i)*phi(i);
}
printf("%lld\n",ans);
return ;
}
 
 
 

最新文章

  1. Linux 网络编程(UDP)
  2. 《JavaScript权威指南》学习笔记 第八天 Node Tree
  3. my first article
  4. C头文件之&lt;stdio.h&gt;
  5. 深入浅出百度地图API开发系列(1):前言
  6. Java API —— File类
  7. 在ubuntu下关闭笔记本触摸板
  8. CMOS和TTL的區別
  9. MVC jsp+servlet+javabean 连接Mysql数据库測试demo
  10. Codeforces Round #350 (Div. 2)A,B,C,D1
  11. Bee Framework_百度百科
  12. Arbiter 系统使用说明
  13. vue history模式
  14. luogu2643 聪聪可可
  15. TensorFlow升级1.4:Cannot remove entries from nonexistent file \lib\site-pack
  16. HDU - 5117 Fluorescent(状压dp+思维)
  17. LA 3602 DNA Consensus String (暴力枚举)
  18. HttpContext.Current.Server.MapPath(&quot;/&quot;) 未将对象设置到对象的实例异常。
  19. HDU 1074 Doing Homework (dp+状态压缩)
  20. mysql -- 模糊查询的四种方法

热门文章

  1. VSCode安装jshint插件报错
  2. C++ Primer 第四版中文版
  3. notebook查找文件
  4. 【学习】JennyHui学自动化测试
  5. NoSQL之Redis数据库初探
  6. NSArray倒序输出的方法
  7. Django: TemplateDoesNotExist (rest_framework/api.html)
  8. js删除局部变量的实现方法
  9. SERDES高速系统(二)
  10. 【转】Jmeter在命令行运行技巧