排队 题解 组合数学+高精度

因为实在是写不动了,所以菜鸡颓博客为了信奥发展的伟大未来作出一点小小的贡献

题目描述

某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检。他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的)

输入格式

只有一行且为用空格隔开的两个非负整数 n 和 m,其含义如上所述。
对于 30%的数据 n≤100,m≤100
对于 100%的数据 n≤2000,m≤2000

输出格式

输出文件 output.txt 仅包含一个非负整数,表示不同的排法个数。注意答案可能很大。

样例输入

1 1

样例输出

   12

题解:
这是一道组合数学,应该说是非常明显。
首先我们需要一个数奥生思路开始要正确。
我们选择固定男生和老师,然后将女生插空,貌似如果固定女生的式子会非常麻烦。我写到一半果断放弃了
固定男生时是A(n,n);
固定老师时分两种情况:
老师卡在一起,也就是老师一起站在两个男生中间,是A(2,2),这时需要一个女生站在老师中间,总式子变成A(n,n)*(n+1)*A(2,2)*A(n+2,m-1),m-1在上面。
或者老师没有卡在一起,是A(n+1,2),然后女生插空,总式子变成A(n,n)*A(n+1,2)*A(n+3,m).
合并式子,最终是n!*(2*m+n*(n+3))*(n+1)*(n+2)!/(n-m+3)!。
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #define maxn 100010
 5 using namespace std;
 6 int n,m,a[maxn],b[maxn],c[maxn];
 7 void mult(int a[],int b)
 8 {
 9     int x=0;
10     for(int i=1;i<=a[0];i++)
11     {
12         int tmp=a[i]*b+x;
13         a[i]=tmp%10;
14         x=tmp/10;
15     }
16     while(x)
17     {
18         a[++a[0]]=x%10;
19         x/=10;
20     }
21 }
22 
23 int main()
24 {
25     scanf("%d%d",&n,&m);a[0]=a[1]=1;
26     for(int i=1;i<=n;i++) mult(a,i);
27     mult(a,(2*m+n*(n+3)));
28     mult(a,n+1);
29     for(int i=n-m+4;i<=n+2;i++) mult(a,i);
30     for(int i=a[0];i>0;i--) printf("%d",a[i]);
31     return 0;
32 }
代码
大概就是这样。
 

转载于:https://www.cnblogs.com/MouDing/p/11121426.html

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

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

相关文章

在window下搭建TensorFlow

网站&#xff1a;https://blog.csdn.net/chduguxue/article/details/793922201.首先查看TensorFlow目前对Windows支持的python版本要求 https://pypi.python.org/pypi/tensorflow/1.1.0rc2截止本文2018年2月27日&#xff0c;要求python是3.5&#xff0c;操作系统64位 如果pytho…

i++与++i的区别,使用实例说明

/*** 类名&#xff1a;TEST.java<br>* <p>* 功能&#xff1a;i与i的区别,使用实例说明* </p>* * Author:<a href"mailto:llnyxxzj163.com">lilong</a> <br/>* Date:2013-5-20<br/>* Time:上午11:25:27 <br/>* Versi…

加减乘除

<script language"javascript">var x2y4document.write("加法:"(xy)"<br>");document.write("减法:"(y-x)"<br>");document.write("乘法:"(x*y)"<br>");document.write("…

Think in AngularJS:对比jQuery和AngularJS的不同思维模式

http://damoqiongqiu.iteye.com/blog/1926475转载于:https://blog.51cto.com/58script/1275438

Day 02 第二天课时总结

一 requests请求库爬取豆瓣电影信息 - 请求url https://movie.douban.com/top250 - 请求方式 GET - 请求头 user-agent cookies import requestsimport redef get_page(url): response requests.get(url) return responsedef parse_index(html): movie_list re.fin…

广播、组播、点播的区别

原网站:https://blog.csdn.net/z502521809/article/details/53007932 今天学习的时候发现了广播、组播、点播这三个用来描述网络节点之间通讯方式的术语&#xff0c;那么这几种“播”到底有什么区别&#xff1f;于是乎百度总结了一下。 ----------------------------------点播…

函数的加减乘除:

<script type"text/javascript">//函数的加法 function add(a,b) {return ab; } document.write(add(6,5))</script><script type"text/javascript">//函数的减法 function reduction(a,b) {return a-b; …

Arm架构下VUE环境的安装

最近因为项目需要在arm环境下搭建vue环境&#xff0c;网上有基于Linux的 教程&#xff0c;路径略有不同&#xff0c;现整理如下 1、安装文件下载 1、下载地址&#xff1a;http://nodejs.cn/download/ 2、选择一个合适的版本下载 2、安装步骤 1、将安装包上传到指定位置(我习惯放…

网络安全技术之端口隔离

端口隔离技术是一种实现在客户端的端口间的足够的隔离度以保证一个客户端不会收到另外一个客户端的流量的技术。通过端口隔离技术&#xff0c;用户可以将需要进行控制的端口加入到一个隔离组中&#xff0c;实现隔离组中的端口之间二层、三层数据的隔离&#xff0c;既增强了网络…

Javascript启动LINUX的x86模拟器

老外真是NB。我无话可说了。 http://bellard.org/jslinux/tech.html转载于:https://www.cnblogs.com/noevil/archive/2012/02/26/2369237.html

python解释器、pycharm安装及环境变量配置

python解释器、pycharm安装及环境变量配置 1.python解释器安装 下载地址&#xff1a;https://www.python.org/ 打开官网&#xff0c;点击downloads,选择操作系统&#xff0c;以windows为例&#xff1a; 选择python2与python3解释器版本&#xff08;以python3.6.6及python2.7.16…

RHEL6.4 Keepalive+LVS(DR)部署文档

1、简介LVSKeepalived 能实现的功能:利用 LVS 控制器主备模式避免单点故障以及自动删除故障 WEB 服务器结点并当它恢复后再自动添加到群集中。拓扑图:2、系统环境系统平台:RHEL6.4硬件平台:dell R720*4硬件参数:cpu(e5-2609)两颗;内存 32G;磁盘 600G*6;RAID 5 ;双电源LVS 版本:…

rtp 实时传输协议

实时传输协议&#xff08;Real-time Transport Protocol或简写RTP&#xff09;是一个网络传输协议&#xff0c;它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。 国际电信联盟ITU-T也发布了自己的RTP文档&#xff0c;作为H.225.0&#xff0c;但是后来当IETF发布了关…

MySQL Cluster7.2.4 集群配置

准备 32位和64位版本 3台服务器 202.38.128.153 dbs2 64位 202.122.32.68 dbs1 64位 192.168.32.22 erpdbtest 32位 管理节点(ndb_mgmd) 192.168.32.22 erpdbtest 32位 数据节点(ndbd) 202.122.32.68 dbs1 64位 202.38.128.153 dbs2 64位 SQL节点(mysqld) 202.122.32.68…

非阻塞I/O多路复用机制

题外话&#xff1a;我们现在要仔细的说一说I/O多路复用机制&#xff0c;因为这个说法实在是太通俗了&#xff0c;通俗到一般人都不懂是什么意思。博主打一个比方&#xff1a;小曲在S城开了一家快递店&#xff0c;负责同城快送服务。小曲因为资金限制&#xff0c;雇佣了一批快递…

JAVA中toString方法的作用(转)

因为它是Object里面已经有了的方法&#xff0c;而所有类都是继承Object&#xff0c;所以“所有对象都有这个方法”。 它通常只是为了方便输出&#xff0c;比如System.out.println(xx)&#xff0c;括号里面的“xx”如果不是String类型的话&#xff0c;就自动调用xx的toString()方…

动态改变控件的方法

1.声明控件参数获取的对象 LinearLayout.LayoutParams linear (LayoutParams) view.getLayoutParams(); 2.设置控件参数&#xff0c;如宽度&#xff1a; linear.width 10&#xff1b; 3.使得设置生效 view.setLayoutParams(linear); 注意&#xff1a;view表示的是对应的控件对…

华为C语言笔试题集合

①华为笔试题搜集 1.static有什么用途&#xff1f;&#xff08;请至少说明两种&#xff09; 1)在函数体&#xff0c;一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内&#xff08;但在函数体外&#xff09;&#xff0c;一个被声明为静态的变量…

orcale中case when和group by同时使用会报无效标识符

不可以使用case when 的列名进行group by&#xff0c;如&#xff1a; select count(1)/7 as "平均违法数量", to_char(wfsj, yyyy-MM-dd ) as time, case when (to_char(wfsj, hh24)) between 00 and 04 then 00-04时 when (to_char(wfsj, hh24)) between 04 and 08 …

Windows平台WebRTC编译-VS2017

转载网站&#xff1a;https://blog.jianchihu.net/webrtc-build-vs2017.html 在音视频领域&#xff0c;想深入研究的话&#xff0c;必定会接触WebRTC。WebRTC是一个庞大的工程&#xff0c;就像是音视频领域的百科全书&#xff0c;音视频采集&#xff0c;编解码&#xff0c;传输…