HDU.2588 GCD (欧拉函数)
来源:互联网 发布:淘宝平台 编辑:程序博客网 时间:2024/06/05 17:20
HDU.2588 GCD (欧拉函数)
标签(空格分隔): 数论
题意分析
我怎么也看不出来这是一道欧拉函数的题目,也是参考了别人的解法写的。
题意就是计算1-N区间里有多少数和N的gcd是大于M的。
枚举所有可能情况计算肯定超时。
考虑这样一件事情,我们枚举
当
由于
这样一来从枚举
手推算几组小数据,就不难发现,其实有重复的枚举,如对于
然而这两种情况其实可以在一次枚举中全部计算出来。所以枚举范围
具体写法见代码。
代码总览
#include <bits/stdc++.h>using namespace std;int getPhi(int x){ int ret = x; for(int i = 2; i * i <= x; ++i) if(x % i == 0){ while(x % i== 0) x /= i; ret -= ret / i; } if(x > 1) ret -= ret / x; return ret;}int n,m,t;int main(){ scanf("%d",&t); while(t--){ int ans =0; scanf("%d %d",&n,&m); for(int i = 1;i*i<=n;++i){ if(n % i == 0){ if(n/i >= m) ans+= getPhi(i); if(i>=m && i*i !=n ) ans+=getPhi(n/i); } } printf("%d\n",ans); } return 0;}
阅读全文
0 0
- hdu 2588 GCD 欧拉函数
- hdu 2588 GCD(欧拉函数)
- HDU 2588 GCD(欧拉函数)
- HDU 2588 GCD (欧拉函数)
- HDU 2588 GCD 欧拉函数
- hdu 2588 GCD---欧拉函数
- HDU 2588 GCD(欧拉函数)
- HDU 2588-GCD(欧拉函数)
- 【HDU】2588 - GCD(欧拉函数)
- hdu 2588 GCD [欧拉函数]【数论】*
- HDU 2588 GCD [欧拉函数]【数论】
- hdu 2588 GCD-欧拉函数
- hdu 2588 GCD+欧拉函数
- hdu 2588 GCD(欧拉函数)
- HDU.2588 GCD (欧拉函数)
- HDU 2588 GCD (欧拉函数)
- hdu 2588 GCD (欧拉函数)
- HDU-2588 GCD(欧拉函数)
- HDU1272 小希的迷宫 并查集入门||判环
- Java程序员面试题及解答(二)
- ASP.Net 总结
- JNDI
- 欢迎使用CSDN-markdown编辑器
- HDU.2588 GCD (欧拉函数)
- 单例模式
- 使markdown文档中的图片居中
- 百度贴吧登录过程分析
- github常见操作和常见错误!
- Shader学习——GPU流水线
- 卡方检验原理及应用
- 封装,以及java中的内部类
- Android 异步消息处理机制(Handler 、 Looper 、MessageQueue)源码解析