哪位大佬帮我看一下这题我这题的代码,帮忙改进一下,超时了
代码如下:
#include<bits/stdc++.h>
using namespace std;
struct flexo
{
int a,b,c,m,k;
string s;
}x[100001];
void Sort(int a,int b,int c)
{
if(a>b) swap(a,b);
if(b>c) swap(b,c);
if(a>b) swap(a,b);
}
int gcd(int a,int b)
{
int temp;
while(b>0)
{
temp=a%b;
a=b;
b=temp;
}
return a;
}
int main()
{
int n,ans=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x[i].a>>x[i].b>>x[i].c>>x[i].m;
for(int j=1;j<=x[i].m;j++)
{
cin>>x[i].s;
if(x[i].s=="S")
{
Sort(x[i].a,x[i].b,x[i].c);
}
else if(x[i].s=="Sw")
{
cin>>x[i].k;
if(x[i].k==1) swap(x[i].a,x[i].b);
else if(x[i].k==2) swap(x[i].b,x[i].c);
else swap(x[i].a,x[i].c);
}
}
cout<<gcd(x[i].a,x[i].b)*gcd(x[i].b,x[i].c)%100000+x[i].a+x[i].b+x[i].c<<endl;
}
return 0;
}
题目如下:
题目描述
你需要建立一个包含(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的值
共 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.