why
查看原帖
why
747009
Spir1t楼主2023/12/20 20:58

为什么老是 UKE

#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<int> a, b; // 用 vector 存储数组 a 和 b
string s;
void solve(int n, int m) {
	a.resize(n + 1);
	b.resize(n);
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	getline(cin, s);
	getline(cin, s);
	for (int i = 1; i <= n; i++) {
		int p1 = a[i], cnt = 1;
		while (p1 != i) {
			p1 = a[p1];
			cnt++;
		}
		int p2 = i;
		for (int j = 1; j <= m % cnt; j++) {
			p2 = a[p2];
		}
		b[p2 - 1] = (int)s[i - 1];
	}
	for (int i = 0; i < n; i++) {
		cout << static_cast<char>(b[i]);
	}
	cout << endl;
}
int main() {
	int n, m;
	while (cin >> n >> m && n && m) {
		solve(n, m);
	}
	return 0;
}
2023/12/20 20:58
加载中...