UVA 10375 Choose and divide
来源:互联网 发布:2014新疆网络管制 编辑:程序博客网 时间:2024/06/03 18:04
The binomial coefficient C(m,n) is defined as
C(m,n) =
m! (m−n)! n! Given four natural numbers p, q, r, and s, compute the the result of dividing C(p,q) by C(r,s).
·Input
Input consists of a sequence of lines. Each line contains four non-negative integer numbers giving values for p, q, r, and s, respectively, separated by a single space. All the numbers will be smaller than 10,000 with p ≥ q and r ≥ s.
·Output
For each line of input, print a single line containing a real number with 5 digits of precision in the fraction, giving the number as described above. You may assume the result is not greater than 100,000,000.
Sample Input
10 5 14 9 93 45 84 59 145 95 143 92 995 487 996 488 2000 1000 1999 999 9998 4999 9996 4998
Sample Output
0.12587 505606.46055 1.28223 0.48996 2.00000 3.99960
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;const int MAXN=10000;int prime[MAXN+1];int nprime;int e[MAXN+1];//e数组储存的是各个素数对应的指数,和prime数组下标相对应void getprime(){ int m=sqrt(MAXN+0.5); memset(prime,0,sizeof(prime)); int i,j; for(i=2;i<=m;i++)//获得1000以内的素数 { if(!prime[i]) { for(j=i*i;j<=MAXN;j+=i) prime[j]=1; } } nprime=0; for(i=2;i<=MAXN;i++)//把素数整理放到prime数组里面 { if(!prime[i]) prime[nprime++]=i; }}void Add_Int(int n,int d){ int i; for(i=0;i<=nprime-1;i++) { while(n%prime[i]==0)//如果n为合数 { n/=prime[i]; e[i]+=d; } if(n==1)break; }}void Add_Fac(int n,int d){ int i; for(i=1;i<=n;i++) { Add_Int(i,d); }}int main(){ getprime(); int p,q,r,s; while(~scanf("%d%d%d%d",&p,&q,&r,&s)) { memset(e,0,sizeof(e)); Add_Fac(p,1);//1和-1为组合数公式中的幂 Add_Fac(q,-1); Add_Fac(p-q,-1); Add_Fac(r,-1); Add_Fac(s,1); Add_Fac(r-s,1); int maxn=max(p,r); double ans=1; int i; for(i=0;i<=maxn;i++) { ans*=pow(prime[i],e[i]); } printf("%.5f\n",ans); } return 0;}
- 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
- UVA 10375 Choose and divide
- padding
- ACM中的GVim配置
- 方法重载,方法重写
- 有道2.1,多了好多参数,爬取失败...
- 基于讯飞语音,百度语音,图灵机器人树莓派的智能语音机器人毕业设计第二天
- UVA 10375 Choose and divide
- PHP字符串常用函数总结
- together进度记录6
- Java RTTI与反射
- 封装
- Arduinoの温湿度OLED及串口显示
- I have a dream
- 我的梦想
- 教育技术发展方向