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