社区讨论

月赛T1为啥RE

P1001A+B Problem参与者 5已保存回复 10

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
10 条
当前快照
1 份
快照标识符
@mm1vnunp
此快照首次捕获于
2026/02/25 18:14
2 周前
此快照最后确认于
2026/02/26 23:55
2 周前
查看原帖
CPP
没有发总版的权限只能发这了
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e7+7;
struct node{
	int x,y;
	double sum;
}a[N],cnt;
bool cmp(node x,node y){return x.sum<y.sum;}
int n;
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].x>>a[i].y;
		a[i].sum=1.0*a[i].x/a[i].y;
//		if(a[i].x>=a[i].y){
//			cnt.x*=a[i].x,cnt.y*=a[i].y;
//		}
	}
	sort(a+1,a+1+n,cmp);
	if(a[n].x<a[n].y){
		cout<<a[1].x<<" "<<a[1].y<<"\n";
		return 0;
	}

	cnt.x=cnt.y=1;
	int mid=1;
	for(int i=2;i<=n;i++){
		if(a[i].x<a[i].y){
			cnt.x*=a[i].x;
			cnt.y*=a[i].y;
		}
		else {
			mid=i;
			a[i].x*=cnt.y;
			a[i].y*=cnt.x;
		}
	}
	a[1].x*=cnt.y,a[1].y*=cnt.x;
	for(int i=mid;i<=n;i++){
		a[1].x*=a[i].y;
		a[1].y*=a[i].x;
	}
	int gcd=__gcd(a[1].x,a[1].y);
	cout<<a[1].x/gcd<<" "<<a[1].y/gcd<<"\n";
	return 0;
}

回复

10 条回复,欢迎继续交流。

正在加载回复...