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;
    }
  • 相关阅读:
    Word中封面的问题
    UML问题
    《十八岁的天空》有感
    SPSS相关和回归分析
    WinForm自定义验证控件
    .NET常用的扩展方法整理
    C# 对JS编码/解码进行转换
    Jquery AJAX 调用WebService服务
    多条件动态LINQ 组合查询
    Visual studio 2008 的语法高亮插件 WordLight
  • 原文地址:https://www.cnblogs.com/pengwill/p/7367025.html
Copyright © 2011-2022 走看看