ural 1091. Tmutarakan Exams(容斥)
2014-11-02 15:37
197 查看
http://acm.timus.ru/problem.aspx?space=1&num=1091
从1~s中选出k个数,使得k个数的最大公约数大于1,问这样的取法有多少种。(2<=k <= s<=50)
同素数四元组问题类似,可以参考/article/2691001.html
只不过这里是选出k个,不是4个。
从1~s中选出k个数,使得k个数的最大公约数大于1,问这样的取法有多少种。(2<=k <= s<=50)
同素数四元组问题类似,可以参考/article/2691001.html
只不过这里是选出k个,不是4个。
#include <stdio.h> #include <iostream> #include <map> #include <set> #include <bitset> #include <list> #include <stack> #include <vector> #include <math.h> #include <string.h> #include <queue> #include <string> #include <stdlib.h> #include <algorithm> #define LL __int64 //#define LL long long #define eps 1e-9 #define PI acos(-1.0) using namespace std; const int maxn = 100010; int k,s; int num[55]; int prime[] = {15,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47}; int cnt[55]; LL c[55][55]; void init() { memset(c,0,sizeof(c)); for(int i = 1; i <= 25; i++) { for(int j = 0; j <= i; j++) { if(j == 0 || j == i) c[i][j] = 1; else if(j == 1) c[i][j] = i; else c[i][j] = c[i-1][j-1] + c[i-1][j]; } } } void dfs(int st, int val, int num) { if(val > 50) return; cnt[val] = num&1 ? 1 : -1; for(int i = st; i <= prime[0]; i++) { if(prime[i]*val > 50) break; dfs(i+1,val*prime[i],num+1); } } int main() { init(); memset(cnt,0,sizeof(cnt)); dfs(1,1,0); while(~scanf("%d %d",&k,&s)) { for(int d = 2; d <= s; d++) { num[d] = s/d; } LL ans = 0; for(int d = 2; d <= s; d++) { if(num[d] < k) break; if(cnt[d]) { ans += cnt[d]*c[num[d]][k]; } } if(ans >= 10000) printf("10000\n"); else printf("%I64d\n",ans); } return 0; }
相关文章推荐
- URAL1091:Tmutarakan Exams(容斥 & 莫比乌斯反演)
- ural 1091. Tmutarakan Exams 容斥
- ural1091(莫比乌斯 容斥)
- ural 1932 The Secret of Identifier 容斥
- URAL 1091. Tmutarakan Exams 容斥
- ural 1932 The Secret of Identifier 容斥
- ural 1091. Tmutarakan Exams(容斥)
- URAL 1932 The Secret of Identifier(容斥)
- URAL 1091 Tmutarakan Exams 【容斥】【组合数】
- URAL 1091 Tmutarakan Exams (DP或容斥)
- URAL 1519 Formula 1 【插头DP模板题】
- 【URAL 1658】1658. Sum of Digits(DP)
- hdu 1695 GCD 容斥+欧拉
- URAL 1218 Episode N-th: The Jedi Tournament(强连通分量)(缩点)
- URAL 1069 Prufer Code(模拟)
- HDU 3208 Integer’s Power 【容斥】
- BZOJ 3181: [Coci2012]BROJ 【数据分治(暴力+(二分&&容斥))
- ural 1110 Power
- ural 1581
- [复数 解析几何 || 随机化] Ural 1046 Geometrical Dreams & POJ 2600 Geometrical dreams