80分求调,8,9wa
查看原帖
80分求调,8,9wa
1354168
czq__楼主2024/8/23 09:05
#include<bits/stdc++.h>
using namespace std;
string s;//存储左手乘积
//高精*低精
void cheng(int a) {
	int t=0;
	for (int i = 0; i < s.size(); i++) {
		t += (s[i] - '0') * a;
		s[i] = t % 10+'0';
		t /= 10;
	}
	while (t > 0) {
		s += t % 10 + '0';
		t /= 10;
	}
}
//高精除低精
string chu(int a) {
	string s1;
	int t=0;
	int t1 = false;
	for (int i =s. size()-1; i >=0; i--) {
		t = s[i] - '0'+t*10;
		if (t >= a) { s1 += t / a + '0'; t -= t / a * a; t1 = 1; }
		else if(t1){ s1 += '0'; }
	}
	if (s1.size() == 0)s1 += '0';
	return s1;
}
//比较字符串储存的数字大小
string cmp(string a, string b) {
	if (a.size() != b.size())return a.size() > b.size() ? a : b;
	else return a > b ? a : b;
}
//结构体用于存储大臣的左右手上的数
struct arr1 {
	long long int a1, a2;
}arr[10000];
//比较大臣左手*右手的数值大小,用于sort排序
bool cmp1(arr1 a,arr1 b){
	return a. a1* a.a2 < b.a2* b.a1;
}
int main() {
	int n, a, b; cin >> n >> a >> b;
	s += a + '0';//
	string max = "0";
	for (int i = 0; i < n; i++) {
		cin >> arr[i].a1 >> arr[i].a2;
	}
	sort(arr, arr + n, cmp1);
	for (int i = 0; i < n; i++) {
		string s1=chu(arr[i].a2);
		cheng(arr[i].a1);
		max = cmp(s1, max);
	}
	cout << max;
}
2024/8/23 09:05
加载中...