hdu 1708
2015-08-15 17:14
295 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1708
六晚的BestCoder(有米!) |
Fibonacci StringTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4653 Accepted Submission(s): 1568 Problem Description After little Jim learned Fibonacci Number in the class , he was very interest in it. Now he is thinking about a new thing -- Fibonacci String . He defines : str = str[n-1] + str[n-2] ( n > 1 ) He is so crazying that if someone gives him two strings str[0] and str[1], he will calculate the str[2],str[3],str[4] , str[5].... For example : If str[0] = "ab"; str[1] = "bc"; he will get the result , str[2]="abbc", str[3]="bcabbc" , str[4]="abbcbcabbc" …………; As the string is too long ,Jim can't write down all the strings in paper. So he just want to know how many times each letter appears in Kth Fibonacci String . Can you help him ? Input The first line contains a integer N which indicates the number of test cases. Then N cases follow. In each case,there are two strings str[0], str[1] and a integer K (0 <= K < 50) which are separated by a blank. The string in the input will only contains less than 30 low-case letters. Output For each case,you should count how many times each letter appears in the Kth Fibonacci String and print out them in the format "X:N". If you still have some questions, look the sample output carefully. Please output a blank line after each test case. To make the problem easier, you can assume the result will in the range of int. Sample Input 1 ab bc 3 Sample Output a:1 b:3 c:2 d:0 e:0 f:0 g:0 h:0 i:0 j:0 k:0 l:0 m:0 n:0 o:0 p:0 q:0 r:0 s:0 t:0 u:0 v:0 w:0 x:0 y:0 z:0 |
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; char str[2][100]; int main() { long long ans[50][30]; int t,k; cin>>t; while(t--) { scanf("%s%s%d",str[0],str[1],&k);// cin>>str[0]>>str[1]>>k; memset(ans,0,sizeof(ans)); for(int i=0; i<strlen(str[0]); i++) ans[0][str[0][i]-'a']++; for(int i=0; i<strlen(str[1]); i++) ans[1][str[1][i]-'a']++; for(int i=2; i<50; i++) for(int j=0; j<26; j++) ans[i][j]=ans[i-1][j]+ans[i-2][j]; char c='a'; for(int i=0; i<26; i++) printf("%c:%lld\n",c+i,ans[k][i]); cout<<endl; } return 0; }
相关文章推荐
- 编辑框的WM_MOUSELEAVE和WM_MOUSEHOVER使用
- POJ 1458 Common Subsequence
- jquery专家
- hdu 1217 Arbitrage
- Apache服务器如何修改默认的文件根目录
- 计蒜之道2015程序设计大赛初赛第四场——爱奇艺的自制节目
- 【COCI 2011】安全监控
- 【LintCode】Number of Island 岛屿的数目
- 例题1.17 年龄排序 UVa11462
- HDU 1069 Monkey and Banana 解题心得
- 关于复用的理解
- iOS中nil,Nil,NULL的区别
- As Easy As A+B
- oracle rac 11.2.0.3 升级到11.2.0.4
- 丑数
- Java 集群技术
- PHP:文件系统
- 【Lua】tolua
- 配置android studio环境-Hello world
- POJ 3253-Fence Repair(优先队列)