2015沈阳现场赛F (HDU 5514)(经典问题 数论phi函数)
来源:互联网 发布:淘宝客服工作简历 编辑:程序博客网 时间:2024/05/07 00:35
题目链接
Frogs
分析
首先我们可以发现能跳到的数一定满足 存在
将
的等价于求小于
这个结论可参见我的另外一篇blog http://blog.csdn.net/Dylan_Frank/article/details/78069821
因此我们可以暴力枚举因子然后判断是否满足条件,如果满足求一个Euler 函数就好了
Ac code
#include<bits/stdc++.h>#define pb push_back#define mp make_pair#define PI acos(-1)#define fi first#define se second#define INF 0x3f3f3f3f#define INF64 0x3f3f3f3f3f3f3f3f#define random(a,b) ((a)+rand()%((b)-(a)+1))#define ms(x,v) memset((x),(v),sizeof(x))#define scint(x) scanf("%d",&x );#define scf(x) scanf("%lf",&x );#define eps 1e-6#define dcmp(x) (fabs(x) < eps? 0:((x) <0?-1:1))using namespace std;typedef long long LL;typedef long double DB;typedef pair<LL,int> Pair;const int maxn = 1e4+10;const int MAX_V = 1e6+10+1e5;int n,m;int d[maxn];bool ok(int v){ for(int i=0 ; d[i]<=v&&i <n ; ++i){ if(v %d[i] ==0){ return 1; } } return 0;}LL getPhi(int m) { int phi = m; for (int i = 2; i*i <= m; i++) { if (m % i == 0) { while (m % i == 0) m /= i; phi = phi/i*(i-1); } } return m > 1 ? phi/m*(m-1) : phi;}int main(){ // ios_base::sync_with_stdio(0); // cin.tie(0); // cout.tie(0); int T; cin>>T; int kase =0; while (T--) { scanf("%d%d",&n,&m ); LL ans =0; for(int i=0 ; i<n ; ++i){ int x;scanf("%d",&x ); d[i] = __gcd(x,m); } sort(d,d+n); for(int i=1 ; i*i <=m ; ++i){ if(m%i ==0){ if(ok(i)){ ans += getPhi(m/i); } if(i==1 || i*i==m)continue; if(ok(m/i))ans += getPhi(i); } } printf("Case #%d: %lld\n", ++kase,ans*m/2); } //std::cout << "time "<< clock()/1000 <<"ms"<< '\n'; return 0;}
阅读全文
0 0
- 2015沈阳现场赛F (HDU 5514)(经典问题 数论phi函数)
- HDU 5514 【2015沈阳现场赛 F】 Frogs
- HDOJ 5512 Pagodas 【2015沈阳现场赛】数论
- HDU 5517 2015沈阳现场赛(二维树状数组)
- HDU 5514 Frogs (2015沈阳F题&&容斥+剪枝)
- HDOJ 5514 Frogs 【2015沈阳现场赛】容斥原理
- hdu 5514 Frogs 2015沈阳区域赛 数论 欧拉 好题 开心的题
- 数论-沈阳站-hdu-5514-容斥
- 2015 ACM/ICPC 沈阳现场赛
- hdu5521Meeting【最短路】2015沈阳现场赛
- hdu 5510 Bazinga 2015ACM/ICPC亚洲区沈阳站现场赛
- HDU 5510 Bazinga(2015亚洲区沈阳站现场赛)
- HDU 5510 2015ACM-ICPC沈阳赛区现场赛B题
- HDU 5512 2015ACM-ICPC沈阳赛区现场赛D题
- HDU 5521 2015ACM-ICPC沈阳赛区现场赛M题
- hdu5455(2015沈阳网络赛F题)
- HDU5950 (2016沈阳现场赛)
- HDU5952(2016沈阳现场赛)
- Spark1.6内存管理
- Qt在Windows下的三种编程环境搭建
- LaTeX简单实践(材料为《统计学习方法》笔记第一章前3节)
- yii 整合微信
- C#中的多线程使用 -- Thread 类: 使用回调函数从一个线程中检索数据
- 2015沈阳现场赛F (HDU 5514)(经典问题 数论phi函数)
- Jquery 关于span标签的取值赋值用法
- SSR客户端
- zookeeper安装集群配置(跪了的一次体验)
- 【nyoj716】River Crossing
- hdu 1708 Fibonacci String
- CSS字体样式
- 欢迎使用CSDN-markdown编辑器
- centos7安装hive+mysql时出现的问题