萌新0pts求助
查看原帖
萌新0pts求助
176843
Scarab楼主2020/9/27 23:21

代码:

#include <bits/stdc++.h>
using namespace std;

int gcd (int m, int n) {
	if (m < n) swap(m, n);
	if (n == 0) return m;
	else return gcd(n, m % n);
}

int n;
long long lenA, lenB, losesA[1000005], losesB[100005], sumA[1000005], sumB[100005];

int main() {
	cin >> n;
	string A, B;
	cin >> A >> B;
	lenA = A.size(), lenB = B.size();
	int Len = lenA * lenB / gcd(lenA, lenB);
	for (int i = 1; i <= Len; ++i) {
		if (A[(i - 1) % lenA] == 'R' && B[(i - 1) % lenB] == 'P') {
			losesA[i]++;
		}
		if (A[(i - 1) % lenA] == 'R' && B[(i - 1) % lenB] == 'S') {
			losesB[i]++;
		}
		if (A[(i - 1) % lenA] == 'P' && B[(i - 1) % lenB] == 'S') {
			losesA[i]++;
		}
		if (A[(i - 1) % lenA] == 'P' && B[(i - 1) % lenB] == 'R') {
			losesB[i]++;
		}
		if (A[(i - 1) % lenA] == 'S' && B[(i - 1) % lenB] == 'R') {
			losesA[i]++;
		}
		if (A[(i - 1) % lenA] == 'S' && B[(i - 1) % lenB] == 'P') {
			losesB[i]++;
		}
		sumA[i] = sumA[i - 1] + losesA[i];
		sumB[i] = sumB[i - 1] + losesB[i];
	}
	cout << (n / Len) * sumA[Len] + sumA[n % Len] << " ";
	cout << (n / Len) * sumB[Len] + sumB[n % Len] << endl;
	return 0;
}
2020/9/27 23:21
加载中...