求一道题
  • 板块题目总版
  • 楼主Hyacinths
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/6/1 13:27
  • 上次更新2023/10/28 00:09:32
查看原帖
求一道题
561985
Hyacinths楼主2022/6/1 13:27

哪位大佬帮我看一下这题我这题的代码,帮忙改进一下,超时了

代码如下:

#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.

2022/6/1 13:27
加载中...