思路:直接模拟出每一个字符串是不可能的。那太长了,数组是存不下的;换个思路,计算出每个字符串的前两个字符串的a,b,c...的数量,然后后一个的字符数量等于前两个相加,最后输出要的那一个字符串里的字符数量就好了;
代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
using namespace std;
struct pp
{
long long c[26];
}fbnq[60];
int main()
{
int n;
char a[50], b[50];
int k;
int len1,len2;
int i,j;
cin >> n;
getchar();
while (n--)
{
for (i = 0; i < 60; i++)
{
for (j = 0; j < 26; j++)
{
fbnq[i].c[j] = 0;
}
}
cin >> a >> b;
cin >> k;
len1 = strlen(a);
len2 = strlen(b);
for (i = 0; i < len1; i++)
{
fbnq[0].c[a[i] - 'a']++;
}
for (i = 0; i < len2; i++)
{
fbnq[1].c[b[i] - 'a']++;
}
for (i = 2; i <=k; i++)
{
for (j = 0; j < 26; j++)
{
fbnq[i].c[j] = fbnq[i - 1].c[j] + fbnq[i - 2].c[j];
}
}
for (i = 0; i < 26; i++)
{
printf("%c:", i + 'a');
printf("%lld\n", fbnq[k].c[i]);
}
printf("\n");
}
system("pause");
return 0;
}