题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1708
心得:
用map统计相同字符出现的次数比较方便,另外此题格式不严谨,最后多了一行回车,考虑到你就PE了。
代码:
#include <iostream>
#include <map>
using namespace std;
int main(){
int t,i,k;
__int64 f1[55],f2[55],sum;
char a[55],b[55];
map<char,__int64> mp1,mp2;
f1[0]=1;f1[1]=0;
f2[0]=0;f2[1]=1;
for(i=2;i<=50;i++){
f1[i]=f1[i-1]+f1[i-2];
f2[i]=f2[i-1]+f2[i-2];
}
cin>>t;
while(t--){
for(i=0;i<26;i++){
mp1['a'+i]=0;
mp2['a'+i]=0;
}
cin>>a>>b>>k;
for(i=0;i<strlen(a);i++) mp1[a[i]]++;
for(i=0;i<strlen(b);i++) mp2[b[i]]++;
for(i=0;i<26;i++){
mp1['a'+i]*=f1[k];
mp2['a'+i]*=f2[k];
sum=mp1['a'+i]+mp2['a'+i];
printf("%c:%I64d\n",'a'+i,sum);
}
cout<<endl;
}
return 0;
}