UVa 10375 (唯一分解定理) Choose and divide
2014-12-14 04:29
363 查看
题意:
求组合数C(p, q) / C(r, s)结果保留5为小数。
分析:
先用筛法求出10000以内的质数,然后计算每个素数对应的指数,最后再根据指数计算答案。
代码君
求组合数C(p, q) / C(r, s)结果保留5为小数。
分析:
先用筛法求出10000以内的质数,然后计算每个素数对应的指数,最后再根据指数计算答案。
#include <cstdio> #include <cmath> #include <cstring> const int maxn = 10000; int pri[maxn], cnt, e[maxn]; //e记录每个素数的质数 bool vis[maxn + 10]; void add_interger(int n, int d) //乘以n的d次幂 { for(int i = 0; i < cnt; ++i) { while(n % pri[i] == 0) { n /= pri[i]; e[i] += d; } if(n == 1) return; } } void add_factorial(int n, int d) //乘以(n!)的d次幂 { for(int i = 2; i <= n; ++i) add_interger(i, d); } int main() { //freopen("10375in.txt", "r", stdin); int m = sqrt(maxn + 0.5); for(int i = 2; i <= m; ++i) if(!vis[i]) for(int j = i*i; j <= maxn; j += i) vis[j] = true; cnt = 0; for(int i = 2; i < maxn; ++i) if(!vis[i]) pri[cnt++] = i; //for(int i = 0; i < 10; ++i) printf("%d\n", pri[i]); int p, q, r, s; while(scanf("%d%d%d%d", &p, &q, &r, &s) == 4) { memset(e, 0, sizeof(e)); add_factorial(p, 1); add_factorial(q, -1); add_factorial(p-q, -1); add_factorial(r, -1); add_factorial(s, 1); add_factorial(r-s, 1); double ans = 1.0; for(int i = 0; i < cnt; ++i) ans *= pow(pri[i], e[i]); printf("%.5f\n", ans); } return 0; }
代码君
相关文章推荐
- uva10375 Choose and Divide(唯一分解定理)
- Uva 10375 Choose and divide 素数唯一分解定理
- UVA - 10375 Choose and divide 唯一分解定理
- UVA 10375 Choose and divide (唯一分解定理)
- Choose and divide唯一分解定理/分解/直接 UVA - 10375
- Choose and divide唯一分解定理/分解/直接 UVA - 10375
- Uva10375 Choose and divide(数论、唯一分解定理、快速幂)
- Choose and divide唯一分解定理/分解/直接 UVA - 10375
- Choose and divide唯一分解定理/分解/直接 UVA - 10375
- Choose and divide唯一分解定理/分解/直接 UVA - 10375
- UVA 10375 Choose and divide 唯一分解定理
- Choose and divide唯一分解定理/分解/直接 UVA - 10375
- UVA - 10375 Choose and divide[唯一分解定理]
- Choose and divide唯一分解定理/分解/直接 UVA - 10375
- UVA - 10375 Choose and divide (唯一分解定理)
- UVA 10375 Choose and divide(唯一分解定理)
- Choose and divide唯一分解定理/分解/直接 UVA - 10375
- Choose and divide唯一分解定理/分解/直接 UVA - 10375
- UVA10375 Choose and Divide (唯一分解定理)
- UVA 10375 Choose and divide(唯一分解定理)