UVa--10375 Choose and divide(math)
来源:互联网 发布:数据质量整改报告 编辑:程序博客网 时间:2024/05/22 03:04
UVa 10375
题解
根据算术基本定理:
#include <bits/stdc++.h>using namespace std;const int maxn = 10000;vector<int> primes;bool a[maxn];int e[maxn];void genePrime(){ for(int i = 2; i < maxn; ++i) { if(a[i]) continue; primes.push_back(i); for(int j = i * i; j < maxn; j += i) a[j] = true; /*for(int j = 2; i * j <= maxn; ++j) a[i * j] = true;*/ } /*for(size_t i = 0; i < primes.size(); ++i) cout << primes[i] << ' ';*/}void add_fac(int n, int d){ for(int i = 1; i <= n; ++i) //calculate n! { int k = i; for(int j = 0; j < primes.size(); ++j) { while(k % primes[j] == 0) { k /= primes[j]; e[j] += d; } if(k == 1) break; } }}int main(){ #ifdef LOCAL freopen("data.in", "r", stdin); #endif // LOCAL int p, q, r, s; genePrime(); while(cin >> p >> q >> r >> s) { memset(e, 0, sizeof(e)); add_fac(p, 1); add_fac(q, -1); add_fac(p - q, -1); add_fac(r, -1); add_fac(s, 1); add_fac(r - s, 1); double ans = 1; for(int i = 0; i < primes.size(); ++i) ans *= pow(primes[i], e[i]); printf("%.5f\n", ans); } return 0;}
其中,add_fac(n, d)表示乘以
0 0
- UVa--10375 Choose and divide(math)
- UVA 10375 - Choose and divide
- uva 10375 - Choose and divide
- UVA - 10375 Choose and divide
- UVa:10375 Choose and divide
- uva 10375 Choose and divide
- UVA 10375 Choose and divide
- Choose and divide - UVa 10375
- UVA - 10375 Choose and divide
- UVA - 10375 Choose and divide
- UVA - 10375 Choose and divide
- UVa 10375 - Choose and divide
- uva 10375 Choose and divide
- UVa 10375 Choose and divide
- UVA 10375 Choose and divide
- UVa 10375 - Choose and divide
- UVA - 10375 Choose and divide
- uva 10375Choose and divide
- 批量kill运行时间较长的进程
- Android短消息用到的常量定义
- HDU2091——空心三角形
- HDU 4932 Miaomiao's Geometry
- 64-bit 与32-bit 简单数据类型的坑
- UVa--10375 Choose and divide(math)
- IOS总结_实现UIButton的图文混排(一)
- eclipse tomcat部署solr
- 【codevs3147】矩阵乘法2,”名“不副”实“
- MySQL:MySQL日期数据类型、MySQL时间类型使用总结
- 操作系统引导的学习
- 自定义view简单例子
- IOS总结_实现UIButton的图文混排(二)
- 鲜为人知的前端知识