hdu 4371 Minimum palindrome(13年成都网络赛D题)(找规律)
2013-10-21 23:49
316 查看
题意:让你使用小写字母表的前m个字母,然后组成一个长度为n的字符串,使其字符串的最大回文串的长度是所有构成长度为n串的最大回文串长度的最小值。输出字典序最小的串。
思路:当m==1 的时候,只能使用a ,那么a 循环即可。当 m>2时,此时使用三个数字典序最小,即使用abc循环即可。而m==2时,需要暴力打表找规律。通过打表发现,当n>8的时候前两位为aa,后面则是aababb循环。而小于8时特判。
暴力表用二进制表示,1表示b,0表示a,如下所示:(n<=20)
0
01
001
0011
00010
000101
0001011
00010111
000010110
0000101100
00001011000
000010110000
0000101100101
00001011001011
000010110010110
0000101100101100
00001011001011000
000010110010110000
0000101100101100101
00001011001011001011
代码如下:
思路:当m==1 的时候,只能使用a ,那么a 循环即可。当 m>2时,此时使用三个数字典序最小,即使用abc循环即可。而m==2时,需要暴力打表找规律。通过打表发现,当n>8的时候前两位为aa,后面则是aababb循环。而小于8时特判。
暴力表用二进制表示,1表示b,0表示a,如下所示:(n<=20)
0
01
001
0011
00010
000101
0001011
00010111
000010110
0000101100
00001011000
000010110000
0000101100101
00001011001011
000010110010110
0000101100101100
00001011001011000
000010110010110000
0000101100101100101
00001011001011001011
代码如下:
#include <iostream> #include <cstdio> using namespace std; int n,m; char a[8]="aababb"; int main() { // freopen("in.txt","r",stdin); int t; scanf("%d",&t); int cas=1; while(t--) { printf("Case #%d: ",cas++); scanf("%d%d",&m,&n); if(m==1) { for(int i=0;i<n;i++) { printf("a"); } printf("\n"); } else if(m==2) { if(n==1) printf("a\n"); if(n==2) printf("ab\n"); if(n==3) printf("aab\n"); if(n==4) printf("aabb\n"); if(n==5) printf("aaaba\n"); if(n==6) printf("aaabab\n"); if(n==7) printf("aaababb\n"); if(n==8) printf("aaababbb\n"); if(n>8) { printf("aa"); n=n-2; int tmp=n/6; for(int i=0;i<tmp;i++) { printf("%s",a); } tmp=n%6; for(int i=0;i<tmp;i++) { printf("%c",a[i]); } printf("\n"); } } else { for(int i=0;i<n;i++) { if(i%3==0) printf("a"); if(i%3==1) printf("b"); if(i%3==2) printf("c"); } printf("\n"); } } return 0; }
相关文章推荐
- HDU 4731 Minimum palindrome (2013成都网络赛,找规律构造)
- 数学题(找规律)-hdu-4371-Minimum palindrome
- 数学题(找规律)-hdu-4371-Minimum palindrome
- HDU 4371 Minimum palindrome 解题报告(找规律)
- hdu 4279 Number(找规律)
- HDU 5100 Chessboard(BestCoder Round #17)(找规律)
- hdu 6090 Rikka with Graph(找规律)
- HDU 4294 Multiple(12年成都网络赛-G题-BFS)
- (HDU 5793)2016 Multi-University Training Contest 6 A Boring Question (规律)
- hdu 1996 汉诺塔VI 规律
- HDU 4990 Reading comprehension(找规律+矩阵快速幂)
- HDU 3389 Game(博弈 Nim 找规律)
- HDU 1719 Friend 【规律】
- hdu 1792规律题
- HDU 5621 KK's Point(规律)
- HDU-1021-Fibonacci Again ( 找规律 + Fibonacci )
- hdu 4203 Doubloon Game (SG规律)
- HDU 6189 Law of Commutation 2017ACM-ICPC 广西邀请赛 (打表找规律)
- hdu 1564 Play a game(博弈——找规律)
- hdu 1525 Euclid's Game(博弈——找规律)