zoukankan      html  css  js  c++  java
  • UVA.10375 Choose and divide (唯一分解定理)

    UVA.10375 Choose and divide (唯一分解定理)

    题意分析

    首先写出组合数的公式,然后利用唯一分解定理分解每一项,若是在分子,则加一,在分母减一,最后根据分解的结果计算即可。

    代码总览

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <cmath>
    #define nmax 10005
    using namespace std;
    int e[nmax];
    bool isprime[nmax];
    vector<int> v;
    void prime(){
        memset(isprime,1,sizeof isprime);
        v.clear();
        for(int i = 2;i<nmax;++i){
            if(isprime[i]){
                v.push_back(i);
                for(int j = 2;i*j<nmax;++j)
                    isprime[i*j] = false;
            }
        }
    }
    void add_to_e(int num,int index){
        for(int i = 2;i<=num;++i){
            int tmp = i;
            for(int j = 0;j<v.size();++j){
                while(tmp % v[j] == 0){
                    e[v[j]]+=index;
                    tmp/= v[j];
                }
                if(tmp == 1) break;
            }
        }
    }
    int p,q,r,s;
    int main()
    {
        prime();
        while(scanf("%d %d %d %d",&p,&q,&r,&s) != EOF){
            memset(e,0,sizeof e);
            add_to_e(p,1);
            add_to_e(s,1);
            add_to_e(r-s,1);
            add_to_e(r,-1);
            add_to_e(q,-1);
            add_to_e(p-q,-1);
            double ans = 1;
            for(int i = 2;i<nmax;++i){
                if(e[i] !=0 ){
                    ans *= pow(i,e[i]);
                }
            }
            printf("%.5f
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    ROC曲线
    数学建模的时间表和分工
    找寻子串
    被7整除
    Java中BufferedReader和scanner的对比
    机器学习降维方法
    梯度下降法
    天池大赛
    统一认证系统(三)
    软件设计方案
  • 原文地址:https://www.cnblogs.com/pengwill/p/7367025.html
Copyright © 2011-2022 走看看