HDU 5642 不能出现连续四个数相同的组合情况 (组合数学)
来源:互联网 发布:xpspeak4.1软件下载 编辑:程序博客网 时间:2024/05/16 04:44
问题描述
国王演讲后士气大增,但此时战争还没有结束,国王时不时要下发命令。由于国王的口吃并没有治愈,所以传令中可能出现:“让第三军-军-军,到前线去” 这样的命令。由于大洋国在军队中安插了间谍 , 战事紧急,很多时候前线的指挥官不能分清哪些命令真正来自国王。但国王的命令有一个特点,他每次连续重复的字符最多 3 次. 所以说他的命令中没有:“让第三军-军-军-军 , 到前线去”,但是可以有 :“让第三军-军 , 到前线去” 。此时将军找到了你,你需要告诉他,给定命令的长度长度为 n,有多少种不同的命令可以是国王发出的 。(也就是求长度为 n 的合格字符串的个数)当然,国王可能说出一句话没有犯任何口吃,就像他那次演讲一样。为了简化答案,国王的命令中只含有小写英文字母,且对答案输出模 1000000007。我们认为两个命令如果完全相同那么这两个字符串逐个比较就完全相同。
输入描述
第一行一个整数表示测试组数:T(T≤10)。每组数据占一行,每行一个正整数 n(n≤2000) 表示字符串的长度。
输出描述
共 T 行,每行一个整数表示合法的命令数量。
输入样例
224
输出样例
676456950
Hint
两个中没有不符合要求的,所以答案为 26×26=676四个不符合要求的只有 `aaaa` `bbbb` ... `zzzz`总共 26 个那么答案就是: 264−26=456950
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<stack>using namespace std;typedef long long ll;const ll mod = 1000000007;ll f[2222],a[2222];int main(){ int i,j,t,n; f[1]=26;f[2]=676;f[3]=17576; for(i=4;i<=2000;i++) { f[i]=(f[i-1]+f[i-2]+f[i-3])%mod*25%mod; } cin>>t; while(t--) { cin>>n; cout<<f[n]<<endl; } return 0;}
0 0
- HDU 5642 不能出现连续四个数相同的组合情况 (组合数学)
- 相同数不能相邻的排列问题 组合数学-容斥原理
- hdu 1792 (最大不能组合数,最大不能组合数的个数)
- Vijos 连续数之和 (组合数学)
- 求组合数(数学)
- Catalan数(组合数学)
- (组合数学)Stirling 数
- hdu 3723 Delta Wave (catalan数+组合数学)
- HDU-1261 字串数(高精度,组合数学)
- 最大不能组合的数
- 1-15中四个数的组合
- HDU 2067 小兔的棋盘 (组合数学 卡特兰数)
- 组合数学-catalan数
- 组合数学:贝尔数
- Stirling数-组合数学
- 组合数学-色数
- hdu 4373 组合数学
- hdu 3944 组合数学
- HDU 5641 King's Phone 手机解锁 (模拟)
- Ubuntu中如何将Tomcat端口改为80
- Android 中字符串的拆分--split的使用
- scala 学习-准备环境
- 关闭Apache显示文件列表
- HDU 5642 不能出现连续四个数相同的组合情况 (组合数学)
- Java打印万年历
- [Android自定义控件]双圆圈内外旋转菜单
- Java基础学习总结——Java对象的序列化和反序列化
- 第一个小应用:图片浏览器 之一 学习怎么操作文件
- Java的native方法
- OPENCV图像处理基础(四)用滑动条做一个按钮
- ubuntu安装/启动/停止/重启MySQL
- 为什么32位cpu只支持4G内存?