首页 > 代码库 > HDU 1708 Fibonacci String(数学题)
HDU 1708 Fibonacci String(数学题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1708
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[n] = 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 ?
Now he is thinking about a new thing -- Fibonacci String .
He defines : str[n] = 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.
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.
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
Author
linle
Source
HDU 2007-Spring Programming Contest
PS:
记录斐波那契的数组当时傻逼了也开成了26,导致WA了几把都找不到原因!
图样图森破!
代码如下:
#include <cstdio> #include <cstring> int main() { int t; char s0[30], s1[30]; int k, a0[26], a1[26]; int c[50]; c[0] = 0, c[1] = 1; for(int i = 2; i <= 50; i++) { c[i] = c[i-1] + c[i-2]; } scanf("%d",&t); while(t--) { memset(s0,0,sizeof(s0)); memset(s1,0,sizeof(s1)); memset(a0,0,sizeof(a0)); memset(a1,0,sizeof(a1)); scanf("%s%s%d",s0,s1,&k); for(int i = 0; i < strlen(s0); i++) { int tt = s0[i]-'a'; a0[tt]++; } for(int i = 0; i < strlen(s1); i++) { int tt = s1[i]-'a'; a1[tt]++; } for(int i = 0; i < 26; i++) { if(k == 0) { printf("%c:%d\n",'a'+i,a0[i]); } else printf("%c:%d\n",'a'+i,a0[i]*c[k-1]+a1[i]*c[k]); } printf("\n"); } return 0; }
HDU 1708 Fibonacci String(数学题)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。