uva 10375
/* 选择与除法_________________________________________________________________________________
#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的更多相关文章
- UVA - 10375 Choose and divide[唯一分解定理]
UVA - 10375 Choose and divide Choose and divide Time Limit: 1000MS Memory Limit: 65536K Total Subm ...
- 【暑假】[数学]UVa 10375 Choose and divide
UVa 10375 Choose and divide 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19601 思路 ...
- UVa 10375 - Choose and divide(唯一分解定理)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA 10375 Choose and divide【唯一分解定理】
题意:求C(p,q)/C(r,s),4个数均小于10000,答案不大于10^8 思路:根据答案的范围猜测,不需要使用高精度.根据唯一分解定理,每一个数都可以分解成若干素数相乘.先求出10000以内的所 ...
- UVa 10375 (唯一分解定理) Choose and divide
题意: 求组合数C(p, q) / C(r, s)结果保留5为小数. 分析: 先用筛法求出10000以内的质数,然后计算每个素数对应的指数,最后再根据指数计算答案. #include <cstd ...
- UVA 10375 Choose and divide
n! 分解素因子 快速幂 ei=[N/pi^1]+ [N/pi^2]+ …… + [N/pi^n] 其中[]为取整 ei 为数 N!中pi 因子的个数: #include <iostream& ...
- UVa 10375 选择与除法(唯一分解定理)
https://vjudge.net/problem/UVA-10375 题意: 输入整数p,q,r,s,计算C(p,q)/C(r,s). 思路: 先打个素数表,然后用一个数组e来保存每个素数所对应的 ...
- Uva 10375 选择与除法 唯一分解定理
题目链接:https://vjudge.net/contest/156903#problem/E 题意:已知 求:C(p,q)/C(r,s) 其中p,q,r,s都是10^4,硬算是肯定超数据类型的. ...
- UVA 10375 Choose and divide(大数的表示)
紫上给得比较奇怪,其实没有必要用唯一分解定理.我觉得这道题用唯一分解只是为了表示大数. 但是分解得到的幂,累乘的时候如果顺序很奇怪也可能溢出.其实直接边乘边除就好了.因为答案保证不会溢出, 设定一个精 ...
随机推荐
- C#浅拷贝与深拷贝区别
也许会有人这样解释C# 中浅拷贝与深拷贝区别: 浅拷贝是对引用类型拷贝地址,对值类型直接进行拷贝. 不能说它完全错误,但至少还不够严谨.比如:string 类型咋说? 其实,我们可以通过实践来寻找答案 ...
- iOS - OC NSStream 文件流
前言 @interface NSStream : NSObject @interface NSOutputStream : NSStream 1.文件流的使用 NSString *filePath = ...
- 学习mongo系列(六)limit(munber),skip(number)
> db.user.find().pretty(){ "_id" : ObjectId("56946fba3a18f4867aecbcd1"), &quo ...
- Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用
#!/usr/bin/Python指定用什么解释器运行脚本以及解释器所在的位置 # -*- coding: utf-8 -*-用来指定文件编码为utf-8的 估计有不少人注意过一些python脚本开头 ...
- linux下查看某软件是否已安装, ubuntu安装deb包
1.rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa | grep “软件或者包的名字”. [root@hexuweb102 ~] rpm -qa | grep ...
- D3.js 做一个简单的图表(条形图)
柱形图是一种最简单的可视化图标,主要有矩形.文字标签.坐标轴组成. 本文为简单起见,只绘制矩形的部分,用以讲解如何使用 D3 在 SVG 画布中绘图. 一. 画布是什么 前几章的处理对象都是 HTML ...
- FACADE
1 意图:为子系统中的一组接口提供一个一直的界面,Facade模式定义了一个高层接口.这个接口使得这一子系统更加容易使用, 2 动机,便于不需要更多功能的人通过Facade 简化使用 3 适用性: . ...
- python3 字符串相关函数
python版本 3.5 #Author by Liguangbo#_*_ coding:utf-8 _*_str="i like study python, welcome to my p ...
- python 学习笔记-----编码问题
1.python 最早支持的是ASCII编码. 所以对于普通的字符串"ABC"为ASCII编码的形式.字母和数字之间的转换函数为ord('字母')和chr(‘数字’)函数. ord ...
- IOS基础库
iOS 开发者中心 https://developer.apple.com/devcenter/ios/inde ...