Choose and Divide UVa 10375

题目大意:给出p,q,r,s,求组合数C(p,q)/C(r,s)

题目思路:

化简得到:原式等价于(p!(r-s)!s!) / (r!(p-q)!q!)

由算数基本定理可知任意一个正整数可被唯一分解为素数幂乘积的形式,将分子分母分解后,进行约分即可。

为了避免计算过程数据移除,我们每计算分子的一项因子,就就算分母的一项因子进行约分

//#pragma GCC optimize(2)
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<stdlib.h>
#include<iostream>
#include<stack>
#include<vector>
#include<math.h>
using namespace std;
#define LL long long
#define INF 0x3f3f3f3fint vis[10005];
LL up[10005];
LL down[10005];
vector<LL> prime;void Init()
{vis[1] = 1;for(LL i=2; i<10005; i++){if(!vis[i]){prime.push_back(i);//vis[i] = 1;for(int j=i*2; j<10005; j+=i)vis[j] = 1;}}
}LL bit[10005];void Solve(LL num,int op)
{LL Size = prime.size();for(LL i=2; i<=num; i++){LL temp = i;for(LL j=0; j<Size; j++){LL p = prime[j];while(temp%p==0){if(op==1)bit[p]++;elsebit[p]--;temp/=p;}if(temp==1)break;}}
}LL Pow(LL n,LL m)
{LL ans = 1;while(m){if(m&1){ans *= n;}n *= n;m /= 2;}return ans;
}int main()
{Init();LL p,q,r,s;double a = 1, b = 1;while(cin>>p>>q>>r>>s){memset(up,0,sizeof(up));memset(down,0,sizeof(down));memset(bit,0,sizeof(bit));a = 1;b = 1;Solve(p,1);Solve(r,-1);Solve(r-s,1);Solve(p-q,-1);Solve(s,1);Solve(q,-1);int Size = prime.size();for(int j=0; j<Size; j++){int i = prime[j];a = a*pow(i,bit[i]);}printf("%.5f\n",a/b);}return 0;
}
View Code

 

转载于:https://www.cnblogs.com/alan-W/p/10804790.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Java中避免空检查

对于Java开发人员&#xff08;从初级到专家&#xff09;最糟糕的噩梦之一是空对象引用检查。 我很确定您已经看过几次这样的代码&#xff1a; public void addAddressToCustomer(Customer customer, Address newAddress){if ( cutomer null || newAddress null)return;if ( …

Linux sudo 详解

简单的说&#xff0c;sudo 是一种权限管理机制&#xff0c;管理员可以授权于一些普通用户去执行一些 root 执行的操作&#xff0c;而不需要知道 root 的密码。严谨些说&#xff0c;sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。当然&#xff0c;能做什么…

echarts自定义图例legend文字和样式

话不多说&#xff0c;先上效果图。 要完成这个图并不难&#xff0c;主要是下面那个图例比较难&#xff0c;需要定制。 让我们从官方文档找找思路&#xff0c;官方文档关于legend.formatter是这样的&#xff1a;链接在这 难点在于&#xff1a; 1.这里的图例文本包含两个变量&am…

DataGridView常见用法和FAQ汇总

前段时间在项目中用到了WinForm&#xff0c;其中最复杂的控件当属DataGridView了&#xff0c;特别喜欢它那高度的可配置性(提供了大量的属性&#xff0c;方法和事件)、丰富的内置列类型&#xff0c;而且易于扩展&#xff0c;对性能问题也提供了良好的解决方案。不过最初看着它那…

信息的Raid存储方式,更安全的保障,更花钱的保障!

raid0 就是把多个&#xff08;最少2个&#xff09;硬盘合并成1个逻辑盘使用&#xff0c;数据读写时对各硬盘同时操作&#xff0c;不同硬盘写入不同数据&#xff0c;速度快。  raid1就是同时对2个硬盘读写&#xff08;同样的数据&#xff09;。强调数据的安全性。比较浪费。 …

Java调试器和超时

在代码中存在超时的情况下如何使用调试器。 我的调试器王国&#xff01; 因此&#xff0c;您一直忙于编写一个项目&#xff0c;一切顺利&#xff0c;直到出现错误为止。 您可以进入开发人员的工具箱&#xff0c;然后拔出调试器。 很棒–您可以设置断点&#xff0c;可以在发生异…

【题解】整理书本

题目描述 小A想把他满屋子的书整理一下。书本分成若干堆。每一堆的书本都有质量w和价值v。小A的任务是将所有书合成一堆。因为小A认为合并i&#xff0c;j两堆的书所需要的力为w[i]-v[i]w[j]-v[j]。合并后的书堆的质量和价值均为合并前两堆书的质量和价值的总和。也就是说&#…

C#正则表达式编程(二):Regex类用法

上一篇讲述了在C#中有关正则表达式的类之间的关系&#xff0c;以及它们的方法&#xff0c;这一篇主要是将Regex这个类的用法的&#xff0c;关于Match及MatchCollection类会在下一篇讲到。对于正则表达式的应用&#xff0c;基本上可以分为验证、提取、分割和替换。仅仅利用Regex…

浏览器记住密码的自动填充Input问题完美解决方案

1、input 前from和input占位隐藏 <form style"width:0;height:0;display:none;"><input type"password" /></form><input type"password" style"width:0;height:0;display:none;" /> 2、input autocomplete&…

Java数字格式

当我看到其他人编写不必要的Java代码并且由于缺乏对已经提供所需功能的JDK类的了解而编写了不必要的Java代码时&#xff0c;我会想到很多次。 这样的一个例子是时间相关的常量的使用硬编码值的写入&#xff0c;如60 &#xff0c; 24 &#xff0c; 1440 &#xff0c;和86400时TI…

数据模型设计

数据&#xff1a;是符号。例如 张三 模型&#xff1a;现实世界事与物特征的抽象与模拟。如飞机模型、空气动力模型。 数据模型&#xff1a;通过对现实世界的事与物主要特征的分析、抽象&#xff0c;为信息系统的实施提供数据存取的数据结构以及相应的约束。 数据模型的要素由操…

优课在线 嵌入式系统(胡威)2018春季测验 参考解析

一、单选题 (共 20.00 分) μCOS-II操作系统属于&#xff08; &#xff09;。 A.一般实时操作系统 B.非嵌入式实时操作系统 C.占先式实时操作系统 D.非占先式实时操作系统 正确答案&#xff1a;C 寄存器R13除了可以做通用寄存器外&#xff0c;还可以做&#xff08; &#xff0…

JBoss Wildfly 8.1上的HawtIO

HawtIO为基于JVM的中间件提供了令人赞叹的视觉效果。 它是应用程序的统一控制台&#xff0c;否则将不得不构建自己的糟糕的Web控制台。 老实说&#xff0c;它们的构建方式各不相同&#xff0c;技术不同&#xff0c;用户体验不同&#xff0c;并且都围绕一种可怕的方式来尝试在QA…

Maven打包时去掉项目版本号

Maven打包时去掉项目版本号 Maven打包后&#xff0c;jar或war文件名里带有版本号信息&#xff0c;如projectname0.0.1-SNAPSHOT.jar等&#xff0c;怎么去掉呢&#xff1f; 解决办法&#xff1a; 打开项目pom.xml文件&#xff0c;在<build> </build>标签内加入如下…

jsp实现上一页下一页翻页功能

前段时间一直忙于期末考试和找实习&#xff0c;好久没写博客了。 这段时间做了个小项目&#xff0c;包含了翻页和富文本编辑器Ueditor的两个知识点,Ueditor玩的还不是很深&#xff0c;打算玩深后再写篇博客。 要实现翻页功能&#xff0c;只需要设置一个pageIndex即可&#xf…

学习笔记之postgresql

/*************************************************************************创建人&#xff1a;LYK 创建时间&#xff1a;2019/05/05 14:47IDE: vs2013 库版本&#xff1a;32位 静态库数据库管理平台 pgAdmin III -- postgresql 注意事项&#xff1a;1&#xff0c;添加头文件…

Delphi关于多线程同步的一些方法

(注&#xff1a;本文为转载 http://hi.baidu.com/navy1130/blog/item/468fcdc448794fce38db49ee.html)线程是进程内一个相对独立的、可调度的执行单元。一个应用可以有一个主线程&#xff0c;一个主线程可以有多个子线程&#xff0c;子线程还可以有自己的子线程&#xff0c;这…

自定义Cassandra数据类型

在博客文章《 从Java连接到Cassandra》中 &#xff0c;我提到了用Java 实现的Cassandra Java开发人员的一个优势是能够创建自定义 Cassandra数据类型 。 在这篇文章中&#xff0c;我将详细介绍如何执行此操作。 Cassandra具有许多内置的数据类型 &#xff0c;但是在某些情况下…

Linux下如何查看版本信息

Linux下如何查看版本信息 Linux下如何查看版本信息&#xff0c; 包括位数、版本信息以及CPU内核信息、CPU具体型号等等&#xff0c;整个CPU信息一目了然。一些常用的 Linux 命令 1、# uname &#xff0d;a &#xff08;Linux查看版本当前操作系统内核信息&#xff09; [hadoopa…

Docker的安装及注意事项

Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#…