/*  选择与除法_________________________________________________________________________________

                           #include <iostream>
#include <map>
#include <cmath>
#include <vector>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
#define fir first
#define sec second
#define pb(x) push_back(x)
#define mem(A, X) memset(A, X, sizeof A)
#define REP(i,l,u) for(int (i)=(int)(l);(i)<=(int)(u);++(i))
#define rep(i,l,u) for(int (i)=(int)(l);(i)>=(int)(u);--(i))
#define foreach(e,x) for(__typeof(x.begin()) e=x.begin();e!=x.end();++e)
typedef long long LL;
typedef unsigned long long ull;
typedef pair<long,long> pll; LL T,n;
const int mod=1e9+7;
const int maxn=10000;
int num[maxn+1];
const int SIZE=1e5+300;//1e6;
bool isprime[SIZE];// filter[i]=true 表示i是素数. 筛选的范围是 0,1,2,... SIZE-1. 共SIZE个. 如果想筛0到7的素数,就把SIZE定为7+1;(因为总是多了个0)
void primefilte()
{ for(int i=0;i<=1;i++) isprime[i]=false;
for (int i=2; i<=SIZE; i++)
{
if(i & 1 || i==2) isprime[i] = true;
else isprime[i] = false;
} for (int i=3; i<=(int)sqrt((long double)SIZE); i++)
{
if (isprime[i])
{
int j = i*2;
while (j<=SIZE)
{
if (isprime[j])
isprime[j] = false;
j+=i;
}
}
}
//for (int i=2; i<=SIZE-1; i++)
// if (isprime[i]) printf("%d ",i);
} vector<int> base;
void addint(int n,int p)
{
REP(i,0,base.size()-1)
{
while(n%base[i]==0)
{
num[i]+=p;
n/=base[i];
}
}
}
void addf(int n,int p)
{
//rep(i,n,2)
//num[i]+=p;
REP(i,2,n)
addint(i,p);
}
int main()
{
freopen("in.txt","r",stdin);
//while(cin>>n) primefilte();
REP(i,2,10000)
if(isprime[i]) base.pb(i); int p,q,r,s;
while(cin>>p>>q>>r>>s)
{
//REP(kase,1,T) { }
mem(num,0);
addf(p,1);
addf(s,1);
addf(r-s,1);
addf(p-q,-1);
addf(q,-1);
addf(r,-1);
double ans=1;
REP(i,0,base.size()-1)
ans*=pow(base[i],num[i]);
printf("%.5lf\n",ans);
}
return 0;
} /*
note : 有一个地方:刚开始直接用的1 2 3 ... 10000作的基(写起来简单),出错了,
因为这样表示太浪费,损失了精度(几乎每次计算都是很小的数计算,误差增大),
于是希望稠密表示,减少误差,唯一分解定理(单次计算数字增大),使得误差降低.
debug : 代码除了模板其他的代码不要复制,不然易出错.应该重新写
optimize:
*/

uva 10375的更多相关文章

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

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

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

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

  3. UVa 10375 - Choose and divide(唯一分解定理)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

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

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

  5. UVa 10375 (唯一分解定理) Choose and divide

    题意: 求组合数C(p, q) / C(r, s)结果保留5为小数. 分析: 先用筛法求出10000以内的质数,然后计算每个素数对应的指数,最后再根据指数计算答案. #include <cstd ...

  6. UVA 10375 Choose and divide

    n! 分解素因子 快速幂 ei=[N/pi^1]+ [N/pi^2]+ …… + [N/pi^n]  其中[]为取整 ei 为数 N!中pi 因子的个数: #include <iostream& ...

  7. UVa 10375 选择与除法(唯一分解定理)

    https://vjudge.net/problem/UVA-10375 题意: 输入整数p,q,r,s,计算C(p,q)/C(r,s). 思路: 先打个素数表,然后用一个数组e来保存每个素数所对应的 ...

  8. Uva 10375 选择与除法 唯一分解定理

    题目链接:https://vjudge.net/contest/156903#problem/E 题意:已知 求:C(p,q)/C(r,s) 其中p,q,r,s都是10^4,硬算是肯定超数据类型的. ...

  9. UVA 10375 Choose and divide(大数的表示)

    紫上给得比较奇怪,其实没有必要用唯一分解定理.我觉得这道题用唯一分解只是为了表示大数. 但是分解得到的幂,累乘的时候如果顺序很奇怪也可能溢出.其实直接边乘边除就好了.因为答案保证不会溢出, 设定一个精 ...

随机推荐

  1. 跨站脚本 XSS<一:防御方法>

    1. 过滤特殊字符 避免XSS的方法之一主要是将用户所提供的内容进行过滤,许多语言都有提供对HTML的过滤: PHP的htmlentities()或是htmlspecialchars(). Pytho ...

  2. (六)文件操作的主要接口API

    1.什么是操作系统API (1)API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用. (2)应用层程序通过调用API来调用操作系统中的各种功能,来干活. (3)学习一个操作系统 ...

  3. 运行js提示库没有注册错误8002801d的解决办法

    运行js提示库没有注册错误8002801d的解决办法这个错误主要是因为服务器上的windows scripts版本较低,请按下面的链接下载较高版本windows scripts 5.6并在服务器上进行 ...

  4. int转string

    #include<iostream> #include<sstream> #include<string> using namespace std; int mai ...

  5. MySQL数据库管理用户权限

    http://blog.itpub.net/7607759/viewspace-675079/ 2.2 授予权限 前面提到了grant命令,grant的语法看起来可是相当复杂的呐: GRANT pri ...

  6. c#网络通信框架networkcomms内核解析之十 支持优先级的自定义线程池

    NetworkComms网络通信框架序言 本例基于networkcomms2.3.1开源版本  gplv3协议 如果networkcomms是一顶皇冠,那么CommsThreadPool(自定义线程池 ...

  7. 69道Spring面试题和答案

    1. 什么是spring? Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring 框架目标是简化Jav ...

  8. ASP.NET Redis 开发 [转]

    Redis简介 Redis是一个开源的,使用C语言编写,面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景.Redis纯粹为应用而产生,它是一个高性能的 ...

  9. 如何通过pid快速找出进程的路径

    [carlton@oc3408554812 Desktop]$ top top - 09:35:06 up 32 min,  2 users,  load average: 1.49, 1.56, 1 ...

  10. 通过top命令发现plymouthd进程cpu负载达到近100% 解决办法

    最近几天一直遇到服务器cpu100%, 通过top命令发现plymouthd进程cpu负载达到近100% 解决方法:打开 /boot/grub/menu.lst , 去掉 “rhgb quiet”这两 ...