小明的骰子

2024-08-28 17:32
文章标签 小明 骰子

本文主要是介绍小明的骰子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

众所周知,小明非常喜欢玩骰子。一天,小芳问小明一个问题。一次性抛n个骰子,一共能抛出几种结果?
小明不想让小芳觉得自己回答不上来,所以小明来求助于你。你一定要帮帮小明。

输入

首先输入一个整数T,代表有T组数据。
接下来的T行,每行输入一个整数n,代表有n个骰子。(0<n<=1000)
注:1,每个骰子有6个面。
2,每个骰子都是相同的。所以(1,1,2)和(1,2,1)是相同的结果。

输出

输出一次性抛n个骰子,一共能抛出几种结果。因为结果有可能很大,所以输出的结果要对1000007取余。

示例输入

2
1
2

示例输出

6
21

提示

如果只抛一次骰子,骰子有6个面。所以一共可以抛出6种可能性。
如果一次性抛2个骰子,可能的结果有以下几种:
(1,1)(1,2)(1,3)(1,4)(1,5)(1,6)
(2,2)(2,3)(2,4)(2,5)(2,6)
(3,3)(3,4)(3,5)(3,6)
(4,4)(4,5)(4,6)
(5,5)(5,6)
(6,6)
即,一共21种

来源


校赛的题目,当时没找到规律,现在总结一下:

用题目中的提示,打表  1,2,3,4,5,6   朝上时的种类数 。

当色子为 n 时,其中的重复情况,在前 n-1 只色子时已经排除了,在考虑第n中色子时,又会在 前  n-1 只色子的 同数字的个数 重复 所以要减去。


规律就是 第3只色子为例:

21 - 6  = 15
15 - 5  = 10
10 - 4  = 6
6 - 3 = 3
3 - 2 = 1



当前列 减掉  同行前列的 部分色子数:

示例程序


[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #include <iostream>  
  2. #include <stdio.h>  
  3. #include <stdlib.h>  
  4. #include <string.h>  
  5. const int mod = 1000007;  
  6. using namespace std;  
  7.   
  8. long long a[10][1010];  
  9. int main()  
  10. {  
  11. int i;  
  12.     memset(a,0,sizeof(a));  
  13.     for(i = 1;i<=6;i++)  
  14.         a[i][1] = 1;  
  15.     a[7][1] = 6;  
  16.     int l = 1,j;  
  17.     for(i = 2;i<=1010;i++)  
  18.     {  
  19.         a[1][i] = a[7][i-1];  
  20.       a[7][i] = a[1][i];  
  21.         for(l = 2;l<=6;l++)  
  22.         {  
  23.             a[l][i] = a[l-1][i]-a[l-1][i-1];  
  24.             a[7][i] += a[l][i];  
  25.         }  
  26.     }  
  27.     int t,n;  
  28.     cin>>t;  
  29.     while(t--)  
  30.     {  
  31.         cin>>n;  
  32.   
  33.         cout<<a[7][n]%mod<<endl;  
  34.     }  
  35.     return 0;  
  36. }  


更多 0
0

这篇关于小明的骰子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1115418

相关文章

简单的Q-learning|小明的一维世界(3)

简单的Q-learning|小明的一维世界(1) 简单的Q-learning|小明的一维世界(2) 一维的加速度世界 这个世界,小明只能控制自己的加速度,并且只能对加速度进行如下三种操作:增加1、减少1、或者不变。所以行动空间为: { u 1 = − 1 , u 2 = 0 , u 3 = 1 } \{u_1=-1, u_2=0, u_3=1\} {u1​=−1,u2​=0,u3​=1}

简单的Q-learning|小明的一维世界(2)

上篇介绍了小明的一维世界模型 、Q-learning的状态空间、行动空间、奖励函数、Q-table、Q table更新公式、以及从Q值导出策略的公式等。最后给出最简单的一维位置世界的Q-learning例子,从给出其状态空间、行动空间、以及稠密与稀疏两种奖励函数的设置方式。下面将继续深入,GO! 一维的速度世界 这个世界,小明只能控制自己的速度,并且只能对速度进行如下三种操作:增加1、减

【HDU】4521 小明系列问题——小明序列 线段树+DP

小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 1632    Accepted Submission(s): 485 Problem Description   大家都知道小明最喜欢研究

nyoj469 擅长排列的小明 II

擅长排列的小明 II 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 3 描述 小明十分聪明,而且十分擅长排列计算。 有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2,3,4,5......n满足以下情况的排列: 1、第一个数必须是1 2、相邻两个数之差不大于2 你的任务是给出排列的种数。 输入 多组数据。每组数据中输入一个

nyoj49 开心的小明

开心的小明 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”。今天一早小明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元。于是,他把每件物品

小明和小明记账簿的故事

在繁华与喧嚣交织的现代都市中,生活节奏日益加快,人们的钱包也随着各种消费而日渐消瘦。小明,一个普通的青年,也深陷在这场财务管理的漩涡之中。一天小明正坐在窗前,手中拿着一本略显陈旧的纸质账本,眉头紧锁地记录着日常生活的每一笔开销。他热爱生活,却总被繁琐的财务管理搞得焦头烂额。每当月底对账时,那些零散的支出就像是一场突如其来的暴风雨,让他措手不及。 就在这时,一个灵感如同春日里的一缕清风,轻轻拂过小

猜叔叔的出生年月日 今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。

package org.bluebridge.topics;/** 猜叔叔的出生年月日今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”“把我出生的年月日连起来拼成一个8位数(月、日不足两位前补0)正好可以被今天的年、月、日整除!”他想了想,又补充到:“再给个提示,我是6月出生的。”根据这

连号区间数 小明这些天一直在思考这样一个奇怪而有趣的问题:

package org.bluebridge.topics;/** 连号区间数小明这些天一直在思考这样一个奇怪而有趣的问题:在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是:如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的“连续”数列,则称这个区间连号区间。当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就

第39级台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!

package org.bluebridge.topics;/** 第39级台阶小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?请你利用计算机的优势,帮助小明寻找答案。* */p

小明传奇1

小明传奇1 Time Limit: 2000MS Memory limit: 65536K 题目描述 小明有一家自己的商店,主营牛奶饮品,最近资金紧张,他想以尽可能低的价格进购足够的牛奶以供日常的需要。但是小明年纪大了,脑子不好使了,想要求助你帮他想出一个最好的节省资金办法。 小明可以从几个农场里购买牛奶,每个农场都有自己的价格,一头奶牛的生产量是固定的,所以每个农场