这是我的第一道绿题,错了#2麻烦神犇们指点(代码写的杂乱请勿愠怒
查看原帖
这是我的第一道绿题,错了#2麻烦神犇们指点(代码写的杂乱请勿愠怒
580072
Jason_z楼主2022/5/12 15:16
//第二个点似乎有故障,不支持下载
#include<bits/stdc++.h>
using namespace std;
int n, ans[4010], len = 1,flag=1; long long reminder;
struct king
{
 int a,b,t;
}a[1010];
bool cmp(king u, king v)
{
 return u.t > v.t;
}
void multiply(int n)
{
 for (int i = 1; i <= len; i++)
  ans[i] *= n;
 for (int i = 1; i <= len+6; i++)
 {
  ans[i + 1] += ans[i] / 10;
  ans[i] %= 10;
 }
 for(int i=len+10;i>=len;i--)
  if (ans[i]) { len = i; break; }
 return;
}
void devide(int n)
{
 reminder = 0;
 for (int i = len; i >=1; i--)
 {
  reminder = reminder * 10 + ans[i];
  ans[i] = reminder / n;
  reminder %= n;
 }
 while (ans[len] == 0&&len>=1)len--;
}
int main()
{
 cin >> n;
 ans[1] = 1;
 for (int i = 0; i <= n; i++) { cin >> a[i].a >> a[i].b; a[i].t = a[i].a * a[i].b; multiply(a[i].a); }
 sort(a+1, a + n + 1, cmp);
 devide(a[1].t);
 for (int i = len; i >= 1; i--) {cout << ans[i]; flag = 0;}
 if (flag)cout << '0';
 return 0;
}
2022/5/12 15:16
加载中...