描述

求Σgcd(i, n), 0<N≤2^32

分析

  • 直接求是不行的, 可以分析满足gcd(i, n) = j 的 i 有多少个, 再用 j 乘上这个个数.
  • 如果gcd(i, n) = j, 那么gcd(i/j, n/j) = 1, 又由于i≤n, 所以gcd(i/j, n/j) = 1的个数就是不超过n/j并与n/j互质的数的个数, 即φ(n/j).
  • 所以Σgcd(i, n) = j * φ(n/j),  j | n.
  • 枚举n的因子j, 统计 j*φ(n/j) + n/j * φ(j).  O(sqrt(n) * sqrt(sqrt(n)))
  • 还有种更简单的方法, 但是没看懂
代码

#include #include using namespace std;
typedef long long int lli;
int phi(int n) {
int ret = n;
int m = (int)(sqrt(n) + 0.5);
for(int i = 2; i <= m; i++) if(n % i == 0) {
ret = ret / i * (i-1);
while(n % i == 0) n /= i;
}
if(n > 1) ret = ret / n * (n-1);
return ret;
}
int main()
{
lli n;
scanf("%lld", &n);
lli m = (lli)(sqrt(n) + 0.5);
lli ans = 0;
for(lli i = 1; i <= m; i++) if(n%i == 0) {
ans += i * phi(n/i);
if(i*i < n) ans += n/i * phi(i);
}
printf("%lld\n", ans);
return 0;
}

BZOJ-2705-Longge的游戏-SDOI2012-欧拉函数相关推荐

  1. bzoj 2705: [SDOI2012]Longge的问题(欧拉函数)

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 3077  Solved: 1914 [Submit ...

  2. bzoj 1409 Password 矩阵快速幂+欧拉函数

    可以发现,该数组的mi就是斐波那契数列 所以要矩阵快速幂搞出第n位 但是斐波那契数列上涨的很快,这就需要欧拉定理了 p^phi(q)%q=1(gcd(p,q)==1) p是素数,所以可以用 然后需要5 ...

  3. 【洛谷 P2303】 [SDOi2012]Longge的问题 (欧拉函数)

    题目链接 题意:求\(\sum_{i=1}^{n}\gcd(i,n)\) 首先可以肯定,\(\gcd(i,n)|n\). 所以设\(t(x)\)表示\(gcd(i,n)=x\)的\(i\)的个数. 那 ...

  4. bzoj2705(洛谷P2303): [SDOI2012]Longge的问题 (欧拉函数)

    题意 求 ∑i=1ngcd(i,n)∑i=1ngcd(i,n)\sum\limits_{i=1}^ngcd(i,n) 题解 这题-真的要写一下了- 其实吧,结果就是 ∑i|ni∗φ(ni)∑i|ni∗ ...

  5. BZOJ2705 [SDOI2012]Longge的问题 欧拉函数

    Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 3874  Solved: 2469 [Submit][Status][Discuss] Descrip ...

  6. 【bzoj2705】[SDOI2012]Longge的问题 欧拉函数

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

  7. POJ - 2480 Longge's problem(欧拉函数+唯一分解定理)

    题目链接:点击查看 题目大意:给出一个n,求 题目分析:因为N到了二的三十二次方,所以直接暴力肯定会T,这里介绍两种方法,都可以做实现这个题目 首先我们需要转化一下这个题目,先说一下优化过后的暴力枚举 ...

  8. BZOJ - 2186 欧拉函数

    题目的意思大概是求1~N!中和M!互质的数的个数 因为对欧拉函数理解不够深刻所以我是分析得到结果的: 当N<=M的时候显然符合要求的数的个数为0: 当N>M的时候我们要求的是1~N!中不含 ...

  9. POJ-2480 Longge's problem 欧拉函数

    详见代码: #include <cstdlib> #include <cstring> #include <cstdio> #include <cmath&g ...

  10. bzoj 3884: 上帝与集合的正确用法(欧拉函数)

    3884: 上帝与集合的正确用法 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 2574  Solved: 1151 [Submit][Status] ...

最新文章

  1. 【camera】1. 相机硬件组成
  2. 网站收录慢的如“蜗牛”,是什么原因导致的?
  3. java 面试 框架_这份java集合框架面试题,轻松搞定面试官!
  4. HDU 2255 奔小康赚大钱 带权二分图匹配 KM算法
  5. ConneR and the A.R.C. Markland-N CodeForces - 1293A(暴力)
  6. sock 文件方式控制宿主机_sock
  7. 线程池写入mysql_用多线程写入数据库的问题(150分)
  8. Protobuf语言指南
  9. 将php中stat()得到的文件权限转成Linux形式
  10. effective c++:对象的赋值运算
  11. mescroll报错
  12. 字体加密woff(@font-face)防爬-学习记录
  13. centos虚拟机上网慢的问题
  14. 华为手机如何设置主页面_华为手机怎么进行桌面管理?正确管理华为手机桌面图标及屏幕的方法...
  15. win7如何设置wifi热点_mac如何共享网络?mac怎么建立wifi热点?
  16. CyberArk被评为Gartner特权访问管理魔力象限的领导者
  17. 关于使用梆梆加固后,适配android5.0系统与64位机型的问题
  18. xilinx FPGA IOB约束使用以及注意事项
  19. 如何在vmlogin中设置易路代理yiluproxy?
  20. Opencv显示图片的窗口大小

热门文章

  1. [云炬创业学笔记]第一章创业是什么测试2
  2. [云炬创业基础笔记]第二章创业者测试18
  3. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170401
  4. Python-TKinter布局之pack
  5. VoxelNet: 基于点云的三维空间信息逐层次学习网络
  6. VTK修炼之道25:图像基本操作_图像子块提取(特征区域提取)
  7. grldr 和 grldr.mbr 区别
  8. 关于onreadystatechange属性(转)
  9. 搭建XSS (跨网站指令码) 测试平台
  10. Spring学习总结三