Fibonacci String(hdu 1708)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fibonacci String(hdu 1708)相关的知识,希望对你有一定的参考价值。
Fibonacci String
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5008 Accepted Submission(s): 1690
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
Recommend
水题,简单的递推。
1 #include<iostream> 2 #include<string.h> 3 #include<queue> 4 #include<stdio.h> 5 #include<algorithm> 6 using namespace std; 7 char a[40]; 8 char b[40]; 9 int aa[26]; 10 int bb[26]; 11 int cc[26]; 12 int main(void) 13 { 14 int n,i,j,k,p,q; 15 scanf("%d",&k); 16 while(k--) 17 { 18 scanf("%s %s",a,b); 19 memset(aa,0,sizeof(aa)); 20 memset(bb,0,sizeof(bb)); 21 scanf("%d",&p); 22 int l=strlen(a); 23 int r=strlen(b); 24 for(i=0;i<l;i++) 25 {aa[a[i]-‘a‘]+=1; 26 } 27 28 for(i=0;i<r;i++) 29 { 30 bb[b[i]-‘a‘]+=1; 31 } 32 if(p==0) 33 { 34 for(i=0;i<=25;i++) 35 { 36 printf("%c:",i+‘a‘); 37 printf("%d\n",aa[i]); 38 } 39 } 40 else if(p==1) 41 { 42 for(i=0;i<=25;i++) 43 { 44 printf("%c:",i+‘a‘); 45 printf("%d\n",bb[i]); 46 } 47 } 48 else 49 { 50 for(i=0;i<p-1;i++) 51 { 52 for(j=0;j<=25;j++) 53 { 54 cc[j]=aa[j]+bb[j]; 55 } 56 for(j=0;j<=25;j++) 57 { 58 aa[j]=bb[j]; 59 } 60 for(j=0;j<=25;j++) 61 { 62 bb[j]=cc[j]; 63 } 64 } 65 for(i=0;i<=25;i++) 66 { 67 printf("%c:",i+‘a‘); 68 printf("%d\n",cc[i]); 69 } 70 }printf("\n"); 71 72 } 73 return 0; 74 }
以上是关于Fibonacci String(hdu 1708)的主要内容,如果未能解决你的问题,请参考以下文章
HDU 1250 Hat's Fibonacci (递推大数加法string)
hdu3306:Another kind of Fibonacci