本文主要是介绍uva10375 - Choose and divide(选择与除法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
打表记录分子分母的质因数。。。。
然后计算结果。。。。。
代码如下:
#include <cstdio>
#include <cmath>
#include <cstring>
#define M 10010
int p, q, r, s;
int c[M];
void div(int t, int d)
{int len = sqrt(t+0.5);for(int i = 2; i <= len; i++) if(t%i==0){while(t%i==0){c[i]+=d;t/=i;}}c[t]+=d;
}
int main ()
{int max;while(~scanf("%d%d%d%d",&p,&q,&r,&s)){max = 0;max = p>max?p:max;max = r>max?r:max;memset(c,0,sizeof(c));for(int i = p-q+1; i <= p; i++) div(i,1);for(int i = 2; i <= s; i++) div(i,1);for(int i = r-s+1; i <= r; i++) div(i,-1);for(int i = 2; i <= q; i++) div(i,-1);double ans = 1.0;for(int i = 2; i <= max; i++){if(c[i]>0) {ans*=i; c[i--]--; }if(c[i]<0) {ans/=i; c[i--]++; }}printf("%.5lf\n",ans);}return 0;
}
这篇关于uva10375 - Choose and divide(选择与除法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!