2017.5.27测试 5. 扑克游戏
来源:互联网 发布:led蓝光危害 知乎 编辑:程序博客网 时间:2024/05/23 21:29
5. 扑克游戏
(e.pas/cpp/c)
【题目描述】
都知道,一副扑克里有四种花色(梅花、黑桃、方块、红桃)。
假设每两张同花色的牌组成一组,求当手上有N张牌时,至少组成1到N/2(向下取整)组牌时有多少种不同的方案?
例如:手中可有N张牌,可以构成:
梅花
黑桃
方块
红桃
a张
b张
c张
d张
a+b+c+d=N,其中0<=a,b,c,d<=n
即:求上表格中所有不同方案能组成1到N/2组的方案数。
例如n=5时,只能构成1组、2组,不能构成3组;构成举例如下:
梅花
黑桃
方块
红桃
构成方案说明
1张
2张
2张
0张
黑桃或方块可构成1组,没有能构成2组的花色
2张
2张
0张
1张
梅花或黑桃可构成1组,没有能构成2组的花色
4张
0张
1张
0张
梅花可构成1组,梅花也能构成2组
0张
5张
0张
0张
黑桃有5张可构成1组,也能构成2组,但不能构成3组
………………
………………
由于最后答案可能会很大,请输出答案 mod 10007的结果。
【输入格式】
一个数,N。
【输出格式】
共N/2(向下取整)行,第i行表示至少组成i组牌时有多少种不同的方案。
【输入样例1】
3
【输出样例1】
16
【样例解释1】
以下列举当手中有3张牌时,每种花色的张数,可能有以下16种情况:
梅花 黑桃 方块 红桃
0 0 0 3
0 0 1 2
0 0 2 1
0 0 3 0
0 1 0 2
0 1 2 0
0 2 0 1
0 2 1 0
0 3 0 0
1 0 0 2
1 0 2 0
1 2 0 0
2 0 0 1
2 0 1 0
2 1 0 0
3 0 0 0
【输入样例2】
4
【输出样例2】
34
10
【数据范围】
30%N<=1000
100%N<=10000
var h:array[0..4]of longint; a:array[0..10000]of longint; n,i,j,k,l,t,ans:longint;begin readln(n); for i:=0 to n do for j:=0 to n-i do begin k:=n-i-j; t:=(i div 2)+(j div 2)+(k div 2); if k mod 2=1 then a[t]:=(a[t]+k+1) mod 10007 else begin a[t]:=(a[t]+k div 2+1) mod 10007; a[t-1]:=(a[t-1]+k div 2)mod 10007; end; end; for i:=n div 2 downto 2 do a[i-1]:=(a[i-1]+a[i]) mod 10007; for i:=1 to n div 2 do writeln(a[i]);end.
- 2017.5.27测试 5. 扑克游戏
- 扑克游戏
- 扑克游戏
- 扑克游戏
- 扑克游戏
- 扑克游戏
- 扑克游戏
- 扑克游戏
- 扑克游戏
- 扑克游戏
- 扑克游戏
- Java编程扑克游戏
- java.扑克游戏
- Java 扑克游戏
- 21点扑克游戏
- 单机扑克游戏设计
- 简单扑克游戏
- 扑克游戏点记
- 利用POI导出excel
- 2017/6/26日总结
- nodejs--(1)
- servlet原理
- 作业6.26
- 2017.5.27测试 5. 扑克游戏
- CF821B-Okabe and Banana Trees
- Tablayout+viewpager
- HTML:js中Window对象的常用属性:screen对象
- 跟新数据库中某个字段的值,在某列后都加某个字符
- DataBase学习笔记 --- OLAP 与 OLTP区别
- java中String的getBytes的用法
- testng + mockito + powerMock
- python数据分析工具学习安装配置简介