c++题目如下:题目描述 你需要建立一个包含(a,b,c)的结构体,并支持以下函数: Sort():使a,b,c从小到大排序 Swap(int type): 如果type=1,则交换a,b 如果type=2,则交换b,c 如果type=3,则交换a,c Calc():输出算式gcd(a,b)∗gcd(b,c)mod100000+a+b+c的值 提示:gcd(a,b)代表求a和b的最大公因数 共 n 个结构体,给出指令,按指令输出 输入格式 给出 n 个结构体,每个结构体所占行数不定. 对于每个结构体中: 第一行三个正整数 (a,b,c). 第二行一个正整数 m .表示操作数. 接下来 m 行描述每个操作. 约定操作的格式如下: Sort(): S Swap(inttype): Sw a(一个整数) Calc(): C 输出格式 对于每个 Calc() 操作,输出一行表示答案 样例输入 2 2 1 3 3 S Sw 3 C 2 2 2 2 S C 样例输出 7 10 数据范围 对于 100% 的数据,满足n≤100000,操作总数 小于 100000. 请问这道题的c++代码是什么
时间: 2023-12-16 12:04:00 浏览: 230
以下是题目的 C++ 代码实现,其中使用了结构体和函数进行封装:
```
#include <iostream>
#include <algorithm>
using namespace std;
struct Data {
int a, b, c;
void Sort() {
int t;
if (a > b) {
t = a;
a = b;
b = t;
}
if (a > c) {
t = a;
a = c;
c = t;
}
if (b > c) {
t = b;
b = c;
c = t;
}
}
void Swap(int type) {
int t;
switch (type) {
case 1:
t = a;
a = b;
b = t;
break;
case 2:
t = b;
b = c;
c = t;
break;
case 3:
t = a;
a = c;
c = t;
break;
}
}
int Gcd(int a, int b) {
if (b == 0) return a;
return Gcd(b, a % b);
}
int Calc() {
int gcd_ab = Gcd(a, b);
int gcd_bc = Gcd(b, c);
int res = gcd_ab * gcd_bc % 100000 + a + b + c;
return res;
}
};
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
Data data;
cin >> data.a >> data.b >> data.c;
int m;
cin >> m;
while (m--) {
string op;
cin >> op;
if (op == "S") {
data.Sort();
} else if (op == "Sw") {
int type;
cin >> type;
data.Swap(type);
} else if (op == "C") {
cout << data.Calc() << endl;
}
}
}
return 0;
}
```
阅读全文