站外题RE
  • 板块题目总版
  • 楼主Avinun_
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/9/20 22:20
  • 上次更新2023/11/4 06:01:04
查看原帖
站外题RE
370863
Avinun_楼主2021/9/20 22:20
题目描述 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分求助

2021/9/20 22:20
加载中...