UVA - 10375 Choose and divide
来源:互联网 发布:网络安全保卫大队在哪 编辑:程序博客网 时间:2024/05/17 16:01
分子分母分别分解成素数的乘积,先约分,后计算
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn= 10000+10;int a[maxn], pri[maxn],num[maxn];int cnt=0;void get_maxn(){ for(int i =2,temp;i<maxn;i++){ if(a[i]==0){ pri[cnt++]=i; temp=i*i; while(temp<maxn){ a[temp]=1; temp+=i; } } } return;}void add_integer(int n,int d){ for(int i=0; i< cnt;i++){ while(n % pri[i] == 0){ n /= pri[i]; num[i] += d; } if(n==1) break; }}void add_factorial(int n, int d){ for(int i = 1;i <= n; i++){ add_integer(i,d); }}int main(){ get_maxn(); int p,q,r,s; while(scanf("%d%d%d%d",&p,&q,&r,&s)!=EOF){ memset(num,0,sizeof(num)); add_factorial(p,1); add_factorial(s,1); add_factorial(r-s,1); add_factorial(q,-1); add_factorial(p-q,-1); add_factorial(r,-1); double n=1; for(int i=0;i<cnt; i++){ while(num[i]>0){ n*=(double)pri[i]; num[i]--; } while(num[i]<0){ n/=(double)pri[i]; num[i]++; } } printf("%.5f\n",n); } return 0;}
0 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
- 字符串中的空格
- xxxSchedule-2-整体架构
- C++ 继承时的构造函数
- 将两个字符串链接
- [opencv] 读写视频, 将连续图片转换为视频
- UVA - 10375 Choose and divide
- Navgation下的UITableView存在偏移的解决方法
- 基于百度地图3.1.1地位当前位置
- va_list/va_start/va_arg/va_end深入分析
- java基础——面向对象(一)
- struts1工作原理浅析(一)
- String,strcpy,strcat,strlen
- 常用的Android studio快捷键修改,
- 当今世界十大经典算法