UVA10375唯一分解定理运用
2017-10-05 12:14
393 查看
本题用到了唯一分解定理,唯一分解定理就是指任意一个数可以被分解为若干素数相乘的形式。数学描述不太严谨,但我想大家都懂的。
话不多说贴代码吧。
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> using namespace std; const int maxn = 1e4+20; int p,q,r,s; int prime[maxn],e[maxn],tot; bool v[maxn]; void init(){ memset(v,1,sizeof(v)); int m = sqrt(maxn+0.5); tot = 0; for (int i=2; i<=m; i++) if (v[i]){ for (int j=i*i; j<maxn; j+=i) v[j] = 0; } for (int i=2; i<maxn; i++) if (v[i]) prime[++tot] = i; } void add_integer(int n, int d){ for (int i=1; i<=tot; i++) { while (n%prime[i] == 0) {e[i]+=d; n/=prime[i];} if (n==1) break; } } void add_factorial(int n, int d){ for (int i=2; i<=n; i++) add_integer(i,d); } int main(){ init(); while (scanf("%d %d %d %d",&p,&q,&r,&s)!=EOF){ memset(e,0,sizeof(e)); add_factorial(p,1); add_factorial(q,-1); add_factorial(p-q,-1); add_factorial(r,-1); add_factorial(r-s,1); add_factorial(s,1); double ans = 1; for (int i=1; i<=tot; i++) ans *= pow(prime[i],e[i]); printf("%.5lf\n",ans); } return 0; }
相关文章推荐
- 10375 - Choose and divide(唯一分解定理的运用 eratosthenes构造素数表)
- 筛法求素数,组合数公式,唯一分解定理(选择与除法,uva 10375)
- Uva 10375 Choose and divide 素数唯一分解定理
- UVa 10375 选择与除法(唯一分解定理)
- uva10375(唯一分解定理)
- 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
- 例10-3 uva10375(唯一分解定理)
- UVA 10375 唯一分解定理
- uva10375 Choose and Divide(唯一分解定理)
- Choose and divide唯一分解定理/分解/直接 UVA - 10375
- UVA 10375 Choose and divide (唯一分解定理)
- 例10-3 uva10375(唯一分解定理)
- UVA - 10375 Choose and divide (唯一分解定理)
- uva 10375 唯一分解定理
- Choose and divide唯一分解定理/分解/直接 UVA - 10375
- Choose and divide UVA - 10375 (数论+唯一分解定理)