题目描述 Description
给定两组由小写字母x和y构成的字符串,其长度都一样,为m。经过n次变换以后,成为两组新的字符串。请统计变换后的两组字符串有多少个对应位置是相同的。变换规则,x变成xx,y变成xy。
输入描述 Input Description
共3行。第一行n和m;第二行为第一个字符串;第三行为第二个字符串。
输出描述 Output Description
一行,一个整数,表示n次变换以后有多少个对应位置字母是相同的。
样例输入 Sample Input
2 3
xyy
yxy
样例输出 Sample Output
10
数据范围及提示 Data Size & Hint
一共需要经过2次变换,字符串初始长度为3。第一次变换后分别是xxxyxy和xyxxxy;第二次变换后分别是xxxxxxxyxxxy和xxxyxxxxxxxy。第二次变换后的长度为12,一共有10个位置是相同的,因此,输出10。
数据范围:
60%的数据,1<=n<=20,1<=m<=10
100%的数据,1<=n<=30,1<=m<=1000
#include <iostream>
using namespace std;
int n, m;
string a, b;
string ca[1000004], cb[1000004];
string change(string a)
{
string ans;
for(int i=0; i<a.size(); i++)
{
if(a[i]=='x') ans+="xx";
else if(a[i]=='y')
ans+="xy";
}
return ans;
}
int main()
{
cin >> n >> m;
cin >> a >> b;
ca[0]=a;
cb[0]=b;
for(int i=1; i<=n; i++)
{
ca[i] = change(ca[i-1]);
cb[i] = change(cb[i-1]);
}
int cnt=0;
for(int i=1; i<=ca[n].size(); i++)
if(ca[n][i] == cb[n][i])
cnt++;
cout << cnt;
return 0;
}
RE了,60分求助