题意:

求组合数C(p, q) / C(r, s)结果保留5为小数。

分析:

先用筛法求出10000以内的质数,然后计算每个素数对应的指数,最后再根据指数计算答案。

 #include <cstdio>
#include <cmath>
#include <cstring> const int maxn = ;
int pri[maxn], cnt, e[maxn]; //e记录每个素数的质数
bool vis[maxn + ]; void add_interger(int n, int d) //乘以n的d次幂
{
for(int i = ; i < cnt; ++i)
{
while(n % pri[i] == )
{
n /= pri[i];
e[i] += d;
}
if(n == ) return;
}
} void add_factorial(int n, int d) //乘以(n!)的d次幂
{
for(int i = ; i <= n; ++i)
add_interger(i, d);
} int main()
{
//freopen("10375in.txt", "r", stdin); int m = sqrt(maxn + 0.5);
for(int i = ; i <= m; ++i) if(!vis[i])
for(int j = i*i; j <= maxn; j += i) vis[j] = true;
cnt = ;
for(int i = ; i < maxn; ++i) if(!vis[i]) pri[cnt++] = i;
//for(int i = 0; i < 10; ++i) printf("%d\n", pri[i]); int p, q, r, s;
while(scanf("%d%d%d%d", &p, &q, &r, &s) == )
{
memset(e, , sizeof(e)); add_factorial(p, );
add_factorial(q, -);
add_factorial(p-q, -);
add_factorial(r, -);
add_factorial(s, );
add_factorial(r-s, ); double ans = 1.0;
for(int i = ; i < cnt; ++i)
ans *= pow(pri[i], e[i]); printf("%.5f\n", ans);
} return ;
}

代码君

UVa 10375 (唯一分解定理) Choose and divide的更多相关文章

  1. UVA - 10780 唯一分解定理

    白书P171 对m,n!分解,质因子指数取min #include<iostream> #include<algorithm> #include<cstdio> # ...

  2. UVa 1635 (唯一分解定理) Irrelevant Elements

    经过紫书的分析,已经将问题转化为求组合数C(n-1, 0)~C(n-1, n-1)中能够被m整除的个数,并输出编号(这n个数的编号从1开始) 首先将m分解质因数,然后记录下每个质因子对应的指数. 由组 ...

  3. UVA 10791 -唯一分解定理的应用

    #include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> ...

  4. UVA - 11388 唯一分解定理

    题意:给出G和L,求最小的a使得gcd(a,b)=G,lcm(a,b)=L 显然a>=G,所以a取G,b要满足质因子质数为L的同次数,b取L //此处应有代码

  5. UVA - 10375 Choose and divide[唯一分解定理]

    UVA - 10375 Choose and divide Choose and divide Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  6. UVA 10375 Choose and divide【唯一分解定理】

    题意:求C(p,q)/C(r,s),4个数均小于10000,答案不大于10^8 思路:根据答案的范围猜测,不需要使用高精度.根据唯一分解定理,每一个数都可以分解成若干素数相乘.先求出10000以内的所 ...

  7. 【暑假】[数学]UVa 10375 Choose and divide

    UVa 10375 Choose and divide 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19601 思路 ...

  8. uva10375 Choose and Divide(唯一分解定理)

    uva10375 Choose and Divide(唯一分解定理) 题意: 已知C(m,n)=m! / (n!*(m-n!)),输入整数p,q,r,s(p>=q,r>=s,p,q,r,s ...

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

    首先说一下什么是唯一分解定理 唯一分解定理:任何一个大于1的自然数N,如果N不是质数,那么N可以分解成有限个素数的乘积:例:N=(p1^a1)*(p2^a2)*(p3^a3)......其中p1< ...

随机推荐

  1. C#WinForm中在dataGridView中添加中文表头

    第一步: 注意事项:(1)如果使用数据库,那么第三步的名称可以是任意的,但是不能和数据库中的列名一样,否则会报错:    (2)第四步的页眉文本就是你想用的中文列名,自己定: (3)第六步尤其重要,不 ...

  2. bitmap缩放时抗锯齿

    bitmap在进行放大缩小的时候经常会出现边缘锯齿的情况,通常的解决办法是在Paint中加入抗锯齿, paint.setAntiAlias(true); 但是有时候发现这并没有起到抗锯齿的作用,这是可 ...

  3. 常用的Eclilpse插件列表以及安装方式总结

    Eclipse常用插件的安装方式总结: 1.Maven Integration for Eclipse WTP     作用:用来方便开发和使用maven项目.     安装方式:Eclipse Ma ...

  4. CSS3展现精彩的动画效果 css3的动画属性

    热火朝天的css3无疑吸引了很多前端开发者的眼球,然而在css3中的动画属性则是新功能中的主打招牌,说到css3的动画属性不得不让人想起这三个属性:Transform﹑Transition﹑Anima ...

  5. 【单调栈】Bzoj 1012: 最大数maxnumber

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 6255  Solved: 2676[Submi ...

  6. 20160723数据结构节alexandrali

    大坑最后再填. 20160803:心情好回来填啦(5/7) 做的题目是: poj2970 我们先每个人都不给钱qwq 然后我们发现有一位的工作时间超过了d 那么我们就从以前安排过工作的人里,a最大的, ...

  7. Oracle session连接数和inactive的问题记录

    Oracle session连接数和inactive的问题记录 http://timnity.javaeye.com/blog/280383 从上周起,服务器Oracle数据库出现问题,用不到半天,就 ...

  8. Redis学习笔记(十)——过期时间、访问限制与缓存

    http://irfen.me/redis-learn-10-time-expire-limit-cache/ 过期时间 之前应该提到过 redis 的特性之一是可以设置键的超时时间.命令是expir ...

  9. hdu 1005 java(System.out.println();与System.out.println(“\n”);)

    //package Main; import java.util.Scanner; public class Main { static int [][] mat=new int [2][2]; st ...

  10. LR_问题_无法打开IE浏览器、监视服务器资源

    无法打开IE浏览器 使用web(http)协议录制时,无法打开IE浏览器,且生成的日志信息为 ****** Start Log Message ****** Web Recorder version ...