Timus 1114. Boxes

Timus 1114. Boxes 要求计算出将两种颜色的球放到盒子中的各种组合的数目。

1114. Boxes

Time Limit: 0.6 second
Memory Limit: 16 MB

N boxes are lined up in a sequence (1 ≤ N ≤ 20). You have A red balls and B blue balls (0 ≤ A ≤ 15, 0 ≤ B ≤ 15). The red balls (and the blue ones) are exactly the same. You can place the balls in the boxes. It is allowed to put in a box, balls of the two kinds, or only from one kind. You can also leave some of the boxes empty. It's not necessary to place all the balls in the boxes. Write a program, which finds the number of different ways to place the balls in the boxes in the described way.

Input

Input contains one line with three integeres N, A and B separated by space.

Output

The result of your program must be an integer writen on the only line of output.

Sample

inputoutput
2 1 1 9
Problem Source: First competition for selecting the bulgarian IOI team.

解答如下(C#语言):

 1 using System;
 2 
 3 namespace Skyiv.Ben.Timus
 4 {
 5   // http://acm.timus.ru/problem.aspx?space=1&num=1114
 6   sealed class T1114
 7   {
 8     static void Main()
 9     {
10       string[] ss = Console.ReadLine().Split();
11       ulong n = ushort.Parse(ss[0]);
12       ulong a = ushort.Parse(ss[1]);
13       ulong b = ushort.Parse(ss[2]);
14       Console.WriteLine(F(n, a) * F(n, b));
15     }
16 
17     static ulong F(ulong n, ulong m)
18     {
19       ulong v = 1;
20       for (ulong i = 1; i <= n; i++) v = v * (m + i) / i;
21       return v;
22     }
23   }
24 }

这道题就是一个组合数学问题。题目说,你有 N (1 ≤ N ≤ 20) 个盒子,A (0 ≤ A ≤ 15) 个红色的球和 B (0 ≤ B ≤ 15) 个蓝色的球。这些球可以放到盒子里面,也可以不放到盒子里面,一个盒子可以放任意多个球。问总共有多少种不同情形。

由于球可以放到盒子里面,也可以不放到盒子里面,所以红球和盒子总共有 C( N + A, A ) 种不同的情形。同样,蓝球和盒子总共有 C( N + B, B ) 种不同的情形。所以,最终的答案就是 C( N + A, A) * C( N + B, B ) 。这里,C( n, m ) 表示从 n 个不同的物品中任意取出 m 个的组合数,公式是 C( n, m ) = n! / (n - m)! / m!。以上程序中的 F( n, m ) = C( n + m, m)。

要注意的是,当输入为 N = 20,A = 15,B = 15 时,输出是 10549134770590785600,这个数已经大于 263 - 1,所以要使用 ulong 数据类型。如果使用 C/C++ 语言,因为 Timus Online Judge 使用的是 Visual C++ 编译器,所以要使用 unsigned __int64 数据类型。如果 在 Sphere Online Judge 答题的话,因为其编译器是 gcc,所以要使用 unsigned long long 数据类型。C++ 语言的程序如下所示(如果是 gcc 编译器则去掉第 2 行开头的“//”):

 1 #include <iostream>
 2 //#define __int64 long long
 3 
 4 unsigned __int64 f(unsigned __int64 n, unsigned __int64 m)
 5 {
 6   unsigned __int64 v = 1;
 7   for (unsigned __int64 i = 1; i <= n; i++) v = v * (m + i) / i;
 8   return v;
 9 }
10 
11 int main()
12 {
13   unsigned __int64 n, a, b;
14   std::cin >> n >> a >> b;
15   std::cout << f(n, a) * f(n, b) << std::endl;
16 }

本程序的运行时间如下:

有点奇怪的是,Visual C++ 编译器也可以使用 unsigned long long,但是速度却比使用 unsinged __int64 慢了 15 倍。如上图所示,ID = 2154601 的记录就是使用 unsinged long long,运行时间为 0.015 秒。而 ID = 2135962 的记录使用 unsinged __int64,运行时间为 0.001 秒。不知是什么原因。照理说,__int64 应该和 long long 是一样的。

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

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

相关文章

写作知识点

1.逻辑框架 2.起承转合 3.写作套路 4.述说,正述,倒序, 先说结果,分析原因,解决方案,,方案检查,紧急预案,预期结果 转载于:https://www.cnblogs.com/zeenzhou/p/11388739.html

Speerio Skinergy 'Image' is ambiguous 错误

使用BeyondCSS皮肤时报错&#xff1a;Could Not Load Skin: /Portals/0/Skins/beyondcss/1column_speerio.ascx Error: E:"Development"DotNetNuke"InstallArea"DotNetNuke_04.08.03_Source"Website"controls"Speerio"Skinergy"s…

Sql Server中自动序号的方法

第一种:使用identity函数增加临时表的方法 selectid identity(int,1,1),*into#tmp fromtableselect*from#tmp droptable#tmp 在SQL2005中新增了ROW_NUMBER()函数,给我们带来了很多方便,使用方法如下: SELECTid,ROW_NUMBER() OVER(orderbyid)asRowNumber FROMTable有一个方便,as…

js- 对象 toString 的结果 [ object Object ]

alert({ }); 输出 [ object Object ] 除了null和undefined之外&#xff0c;其他的类型(数值、布尔、字符串、对象)都有toString()方法&#xff0c;它返回相应值的字符串表现(并不修改原变量)。每个对象都有一个toString()方法。当该对象被表示为一个文本值时&#xff0c;或者一…

flex白板之图形绘制函数

图形的绘制 Graphics类提供了相关的方法&#xff1a; 1&#xff0c;清空画布 graphics.clear();2&#xff0c;设置画笔 graphics.lineStyle(thickness:Number NaN, color:uint 0, alpha:Number 1.0, pixelHinting:Boolean false, scaleMode:String "normal", ca…

程序员的工具箱奇形怪状

Snipaste 有道词典window客户端 转载于:https://www.cnblogs.com/ww01/p/11393340.html

请汇编高手注释的CompareText

这段代码是将两个字符串对象进行比较&#xff0c;忽略大小写&#xff0c;两个字符串缓冲区地址利用EAX和EDX两个寄存器传给该函数&#xff0c;字符串的长度用4个字节保存在缓冲区的前面&#xff0c;函数用EAX返回比较结果&#xff0c;结果为0表示相同。function CompareText(co…

俱乐部又多了一个MVP

山西DotNet俱乐部的周金桥同志成为2008年7月份的MVP&#xff0c;在这里祝贺一下。

交朋友的学问

交朋友这个事情是这样的&#xff0c; 咱们自己确实得努力&#xff0c; 否则有点水平的就不会倾向于和咱们建立关系。 不是别人骄傲&#xff0c; 而是如果交一大堆朋友&#xff0c; 用于交流的时间又有限&#xff0c; 到时候反而不知如何处理&#xff0c;得罪哪一个也行不是。过…

MathCAD求解方程组

用MathCAD解方程组&#xff0c;经常因为的原因出错&#xff0c;所以留在这里自己看&#xff0c;也供大家参考。 转自&#xff1a;http://www.cscce.net/fsp/reeducation/mathcad.html (九) 解方程与方程组 1&#xff0e;解一元一次方程 root函数格式&#xff1a;root(f(x),x…

计算机启动过程详解

打开电源启动机器几乎是电脑爱好者每天必做的事情&#xff0c;面对屏幕上出现的一幅幅启动画面&#xff0c;我们一点儿也不会感到陌生&#xff0c;但是&#xff0c;计算机在显示这些启动画面时都做了些什么工作呢&#xff1f;相信有的朋友还不是很清楚&#xff0c;本文就来介绍…

extern C

extern "C" LuChenQun edited this page Mar 30, 2019 3 revisions在C中常在头文件见到extern "C"修饰函数&#xff0c;那有什么作用呢&#xff1f; 是用于C链接在C语言模块中定义的函数。 C虽然兼容C&#xff0c;但C文件中函数编译后生成的符号与C语言生…

病毒与恶意程序

仅仅在几年前&#xff0c;我们还可以清晰地辩明哪些软件是具有恶意的而哪些软件是无害的&#xff0c;然而在今天&#xff0c;病毒无论在种类还是数量上都呈现出爆炸性的增长&#xff0c;甚至有大量的非授权软件已经超过了病毒的意义范畴&#xff0c;恶意程序已经形成了一个大的…

三层体系结构学习总结

三层架构学习总结KeyWords: 三层体系结构,DAL,BLL,USL,学习心得,三层体系结构,软件三层体系结构 By Flouse2008年7月24日三层体系结构的概念 用户界面表示层(USL)业务逻辑层(BLL)数据访问层(DAL) 图一&#xff1a;BLL将USL与DAL隔开了&#xff0c;并且加入了业务规则 各层的作用…

面向对象(1)

1.对象的比较 和equals: &#xff1a;比较两个变量的值是否相等。 比较两个引用类型的内存地址是否相等&#xff0c;即是否指向同一对象。eqeal()&#xff1a;比较两对象内容是否一致 2.抽象类 抽象类是一种模板模式&#xff0c;为所有子类提供了一个通用模板&#xff0c;子类…

改变人生的几句话

第一句话是&#xff1a;优秀是一种习惯。 这句话是古希腊哲学家亚里士多德说的。如果说优秀是一种习惯&#xff0c;那么懒惰也是一种习惯。人出生的时候&#xff0c;除了脾气会因为天性而有所不同&#xff0c;其他的东西基本都是后天形成的&#xff0c;是家庭影响和教育的结果…

面向对象(2)

1、变量 变量的本质是一个“可操作的存储空间”&#xff0c;空间的位置是确定的&#xff0c;但是里面放置的什么值是不确定的。 int整型 是4个字节&#xff0c;每个字节有8位&#xff0c;所以int定义的变量最多可存储32bit的信息。 double双精度浮点型和long长整型有8个字节 2、…

具有全局观的网络拓扑

近年来&#xff0c;IT技术发展迅速&#xff0c;随着各个企业IT系统的建设&#xff0c;网络架构从单一的局域网扩展到广域网&#xff0c;网络设备也是类型多种多样&#xff0c;路由器、交换机、防火墙、IDS、***等等&#xff0c;而且网络设备的供应厂商也是越来越多&#xff0c;…

拥塞管理

在主干网设备局域网连接接口上&#xff0c;在入方向&#xff08;局域网向广域网流向&#xff09;进行拥塞管理的部署。在网络中&#xff0c;当局域网中的数据网广域网链路上发送时&#xff0c;到达的速度大于接口发送分组的速度时&#xff0c;在该接口处就会产生拥塞。如果没有…

硬件_WIFIBlue

WIFI 平台&#xff1a;全志 模组&#xff1a;AP6210 &#xff08;WF BT FM&#xff09; 模式&#xff1a;STA  AP  Wi-Fi Direct&#xff08;点对点&#xff09; 接口&#xff1a;SDIO / USB——WF UART PCM——BT PCM数字音频接口&#xff0c;说明接口传输的音频数…