zoukankan      html  css  js  c++  java
  • Uva 10375 选择与除法 唯一分解定理

    题目链接:https://vjudge.net/contest/156903#problem/E

    题意:已知

    求:C(p,q)/C(r,s)

    其中p,q,r,s都是10^4,硬算是肯定超数据类型的。

    可以这样处理:利用唯一分解式约分;

    首先将所有数,唯一分解;最后,算素数的乘积;

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 const int maxn = 10000;
     6 vector<int> primes;
     7 int e[maxn];
     8 
     9 bool is_prime(int n) {
    10     int m = floor(sqrt(n)+0.5); //向下取整
    11     for(int i=2;i<=m;i++)
    12         if(n%i==0) return false;
    13     return true;
    14 }
    15 
    16 void add_integer(int n,int d) {
    17     for(int i=0;i<primes.size();i++) {
    18         while(n%primes[i]==0) {
    19             n /=primes[i];
    20             e[i]+=d;
    21         }
    22         if(n==1) break;
    23     }
    24 }
    25 
    26 void add_factorial(int n,int d) {
    27     for(int i=1;i<=n;i++)
    28         add_integer(i,d);
    29 }
    30 
    31 int main()
    32 {
    33     for(int i=2;i<=10000;i++)
    34         if(is_prime(i)) primes.push_back(i);
    35 
    36     int p,q,r,s;
    37     while(cin>>p>>q>>r>>s) {
    38         memset(e,0,sizeof(e));
    39         add_factorial(p,1);
    40         add_factorial(q,-1);
    41         add_factorial(p-q,-1);
    42         add_factorial(r,-1);
    43         add_factorial(s,1);
    44         add_factorial(r-s,1);
    45 
    46         double ans = 1;
    47         for(int i=0;i<primes.size();i++) {
    48             ans*=pow(primes[i],e[i]);
    49         }
    50 
    51         printf("%.5lf
    ",ans);
    52 
    53     }
    54 
    55     return 0;
    56 }
    View Code
  • 相关阅读:
    使用git bash提交代码到github托管
    eclipse中将java项目变成web项目
    程序员的兼职网站
    python 文件内容修改替换操作
    简单介绍下python中函数的基础语法
    python lambda简单介绍
    微信小程序 --01
    微信小程序开发 --02
    弹性盒模型flex
    HTML基础
  • 原文地址:https://www.cnblogs.com/TreeDream/p/6659243.html
Copyright © 2011-2022 走看看