[bzoj]P2705 OR [luogu]P2303

Longge的问题

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。


注意到这些最大公约数肯定是n的约数,对于约数K,我们想找出gcd(n,i)=k的有多少个,也即gcd(n/k,i/k)=1,也就等价于求φ(n/k)。

ans=Σφ(n/k)*k

问题就在于怎么求φ(n),之前竟然一直不知道可以sqrt(n)计算,感觉自己好傻,今天学习了...(一直以为要用递推,不然就要写线性筛[神经病啊])

还有就是枚举sqrt(n)时注意k*k=n的情况,没判这种情况结果bzoj过了,luogu没过...很尴尬。

代码:

 //2017.10.31
 //math
 #include<iostream>
 #include<cstdio>
 #include<cstring>
 using namespace std;
 typedef long long ll ;
 inline ll read();
 namespace lys{
     ll n,ans;
     ll phi(ll x){
         int i;
         ll w=x,res=x;
         ;1LL*i*i<=w;i++){
             if(!(x%i)){
                 res=res*(i-)/i;
                 while(!(x%i)) x/=i;
             }
         }
         ) res=res*(x-)/x;
         return res ;
     }
     int main(){
         int i;
         n=read();
         ;1LL*i*i<=n;i++)
             if(!(n%i)){
                 ans+=phi(n/i)*i;
                 if(1LL*i*i!=n) ans+=phi(i)*(n/i);
             }
         printf("%lld\n",ans);
         ;
     }
 }
 int main(){
     lys::main();
     ;
 }
 inline ll read(){
     ll kk=,ff=;
     char c=getchar();
     '){
         ;
         c=getchar();
     }
     +c-',c=getchar();
     return kk*ff;
 }

最新文章

  1. codeforces Codeforces Round #380 (Div. 1, Rated, Based on Technocup 2017 - Elimination Round 2)// 二分的题目硬生生想出来ON的算法
  2. 老学员的学习感悟 --prince2认证有什么用
  3. php部分---一个分页类、用法
  4. 为图片添加九宫格信息-UI界面编辑器(SkinStudio)教程
  5. UIView的ContentMode
  6. SqlSever基础 datepart函数 返回现在几点了
  7. 简单实现web单点登录
  8. C# Access DBHelp
  9. FFMPEG + SDL音频播放分析
  10. Qt知识点、疑难杂症的治疗
  11. java虚拟机学习-JVM调优总结-基本垃圾回收算法(7)
  12. 算法:javascript截取字符串
  13. Spring+EhCache缓存实例(详细讲解+源码下载)
  14. DeepLearning.ai学习笔记(四)卷积神经网络 -- week4 特殊应用:人力脸识别和神经风格转换
  15. nginx学习笔记(三)
  16. Java使用RabbitMQ之公平分发
  17. oracle表被锁(delete或update一直处于执行状态)的处理办法。
  18. C++ cout
  19. OASGraph 转换rest api graphql 试用
  20. java基本语法一

热门文章

  1. ubutnu同时安装OpenCV2和OpenCV3及contrib
  2. 简述Vue的实例属性、实例方法
  3. return语句
  4. tensorflow学习笔记三----------基本操作
  5. Maven clean install 跳过单元测试
  6. Sql 字符串自增列的实现
  7. mysql两种备份方法总结:mysqldump 和 xtrabackup
  8. python 快速排序实现
  9. linux MySQL 初始化数据库
  10. CTF各种资源:题目、工具、资料