10pts 悬关求调
查看原帖
10pts 悬关求调
776668
Gaogao2011楼主2023/5/31 11:56

My Code:\text{My Code:}

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a, b;
//int testcnt = 0;
string s = "ABCDEFGHIJKLMNOP";
int ksm(int a, int b, int p) {
	int ans = 1 % p;
	while (b) {
		if (b & 1) {
			ans = ans * a % p;
		}
		b >>= 1;
		a = a * a % p;
	}
	return ans;
}
//void testprint() {
//	cout << s;
//}
void U1() {
    return;
}
void U3() {
	int t = ksm(a, b, 3);
	for (int i = 1; i <= t; i++) {
		char a = s[4], b = s[10], c = s[11];
    	s[4] = b, s[10] = c, s[11] = a;
	}
    return;
}
void U5() {
	int t = ksm(a, b, 5);
	for (int i = 1; i <= t; i++) {
		char a = s[1], b = s[5], c = s[6], d = s[12], e = s[13];
    	s[1] = b, s[5] = c, s[6] = d, s[12] = e, s[13] = a;
	}
    return;
}
void U7() {
	int t = ksm(a, b, 7);
	for (int i = 1; i <= t; i++) {
		char a = s[0], b = s[2], c = s[3], d = s[7], e = s[8], f = s[14], g = s[15];
    	s[0] = b, s[2] = c, s[3] = d, s[7] = e, s[8] = f, s[14] = g, s[15] = a;
	}
    return;
}
void R1() {
    return;
}
void R3() {
	int t = ksm(a, b, 3);
	for (int i = 1; i <= t; i++) {
		char a = s[1], b = s[2], c = s[3];
    	s[1] = c, s[2] = a, s[3] = b;
	}
    return;
}
void R5() {
	int t = ksm(a, b, 5);
	for (int i = 1; i <= t; i++) {
		char a = s[4], b = s[5], c = s[6], d = s[7], e = s[8];
    	s[4] = e, s[5] = a, s[6] = b, s[7] = c, s[8] = d;
	}
    return;
}
void R7() {
	int t = ksm(a, b, 7);
	for (int i = 1; i <= t; i++) {
		char a = s[9], b = s[10], c = s[11], d = s[12], e = s[13], f = s[14], g = s[15];
    	s[9] = g, s[10] = a, s[11] = b, s[12] = c, s[13] = d, s[14] = e, s[15] = f;
	}
    return;
}
void D1() {
    return;
}
void D3() {
	int t = ksm(a, b, 3);
	for (int i = 1; i <= t; i++) {
		char a = s[8], b = s[14], c = s[13];
    	s[8] = c, s[14] = a, s[13] = b;
	}
    return;
}
void D5() {
	int t = ksm(a, b, 5);
	for (int i = 1; i <= t; i++) {
		char a = s[3], b = s[7], c = s[6], d = s[12], e = s[11];
    	s[3] = e, s[7] = a, s[6] = b, s[12] = c, s[11] = d;	
	}
    return;
}
void D7() {
	int t = ksm(a, b, 7);
	for (int i = 1; i <= t; i++) {
		char a = s[0], b = s[2], c = s[1], d = s[5], e = s[4], f = s[10], g = s[9];
    	s[0] = g, s[2] = a, s[1] = b, s[5] = c, s[4] = d, s[10] = e, s[9] = f;
	}
    return;
}
void U(int num) {
    if (num == 1) U1();
	if (num == 3) U3();
	if (num == 5) U5();
	if (num == 7) U7();
    return;
}
void R(int num) {
    if (num == 1) R1();
	if (num == 3) R3();
	if (num == 5) R5();
	if (num == 7) R7();
    return;
}
void D(int num) {
    if (num == 1) D1();
	if (num == 3) D3();
	if (num == 5) D5();
	if (num == 7) D7();
    return;
}
void operate(string str, string s) {
	int len = str.size();
	for (int i = 0; i < len; i += 2) {
		char op = str[i];
		int num = str[i+1] - '0';
		if (op == 'U') {
			U(num);
			//testcnt++;
		}
		if (op == 'R') {
			R(num);
			//testcnt++;
		}
		if (op == 'D') {
			D(num);
			//testcnt++;
		}
	}
	return;
} 
int main() {
	string str;
	cin >> str >> a >> b;
	operate(str, s);
	cout << s << endl;
	return 0;	
}

有没有大佬帮我调一下qwq

2023/5/31 11:56
加载中...