hdu1695 dfs+欧拉函数
来源:互联网 发布:js prop checked 编辑:程序博客网 时间:2024/05/21 06:39
很经典的题,值得一做。。。
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <vector>using namespace std;#define ll __int64#define maxn 160000bool f[maxn] ;ll phi[maxn] ;//记录欧拉函数值ll prime[maxn] ;vector<ll>g[maxn];void init(){ int num=0; phi[1]=1; for(int i=2;i<maxn;i++) { if(!phi[i]) { num++; prime[num]=i; for(int j=i;j<maxn;j+=i) { if(!phi[j]) { phi[j]=j; } phi[j]-=phi[j]/i; } } } for(int i=2;i<=1e5;i++) { int tmp=i; int j=1; for(;prime[j]*prime[j]<=i;j++) { if(tmp % prime[j]==0) { g[i].push_back(prime[j]); while(tmp%prime[j]==0) { tmp/=prime[j]; } } if(tmp==1) break; } if(tmp>1) g[i].push_back(tmp); }}int dfs(ll x,ll b,ll now){ ll res=0; for(ll i=x;i<g[now].size();i++) res = res + b/g[now][i] - dfs(i+1,b/g[now][i],now) ; return res ;}int main(){ int T ,i; init() ; scanf("%d",&T); int cas = 0 ; ll a,b,c,d ,k; while(T--) { scanf("%I64d%I64d%I64d%I64d%I64d",&a,&b,&c,&d,&k) ; if(b > d ) swap(b,d) ; if(k == 0|| k>b||k>d) { printf("Case %d: 0\n",++cas); continue ; } b = b/k ; d = d/k ; ll ans = 0 ; for(i = 1; i <= b;i++) ans+=phi[i] ; for(i = b+1; i <= d;i++) { ans=ans + b - dfs(0,b,i); } printf("Case %d: %I64d\n",++cas,ans) ; } return 0;}
0 0
- hdu1695 dfs+欧拉函数
- hdu1695 GCD 【欧拉函数+容斥】
- 欧拉函数+容斥原理-HDU1695
- HDU1695 欧拉函数+容斥原理+筛质因子
- hdu1695 GCD (容斥原理+欧拉函数)
- hdu1695 GCD 欧拉函数+容斥原理
- HDU1695-GCD(数论-欧拉函数-容斥)
- hdu1695--GCD(欧拉函数+容斥原理)
- hdu1695 GCD(容斥原理+欧拉函数)
- HDU1695 GCD【容斥原理】【欧拉函数】
- 20160330 HDU1695 GCD(欧拉函数+容斥原理)
- hdu1695(欧拉函数,容斥原理,vector容器)
- HDU1695 GCD (欧拉函数+容斥原理)
- hdu1695 GCD(欧拉函数+容斥原理)
- HDU1695(欧拉+容斥)
- hdu1695欧拉,容斥
- hdu1695(莫比乌斯)或欧拉函数+容斥
- hdu1695((容斥定理+欧拉函数)或(莫比乌斯反演))
- 回去后我的干活就噶是假的
- 快速排序递归非递归队列堆栈实现
- 电话过去我估计的后果和骄傲是电玩
- Codeforces 455C Civilization(并查集+dfs)
- 都回去后金额我是大家哈高速的话几千万
- hdu1695 dfs+欧拉函数
- Mondrian 表头中文显示(汉化)
- 【iOS】利用block实现回调的示例
- IOS7 根据字符串求尺寸
- Python基础入门部分函数用法
- 安装JAVA开发环境--JDK
- IT从上层到底层是怎样的学习过程
- Apache服务的性能和工作原理
- android service 之二(IntentService)