社区讨论
60PTS, WA #5#7#8#9, 求调玄关
P1080[NOIP 2012 提高组] 国王游戏参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mkb30dg6
- 此快照首次捕获于
- 2026/01/12 19:30 2 个月前
- 此快照最后确认于
- 2026/01/12 19:41 2 个月前
所以一定要高精度吗
用unsigned long long:
CPP#include<bits/stdc++.h>
using namespace std;
const int maxN=1e3+5;
struct node{
unsigned long long a,b;
}num[maxN];
bool cmp(node x,node y) {return x.a*x.b<y.a*y.b;}
int n;
unsigned long long ans;
int main()
{
cin>>n;
cin>>num[0].a>>num[0].b;
for(int i=1;i<=n;i++) cin>>num[i].a>>num[i].b;
sort(num+1,num+n+1,cmp);
unsigned long long x=num[0].a;
for(int i=1;i<=n;i++)
{
ans=max(x/num[i].b,ans);
x*=num[i].a;
}
cout<<ans;
}
60 PTS。
CPP
用__int128:
#include<bits/stdc++.h>
using namespace std;
const int maxN=1e3+5;
void print(__int128 x)
{
if(x>9)
{
print(x/10);
}
putchar(x%10+'0');
}
struct node{
int a,b;
}num[maxN];
bool cmp(node x,node y) {return x.a*x.b<y.a*y.b;}
int n;
__int128 ans;
int main()
{
cin>>n;
cin>>num[0].a>>num[0].b;
for(int i=1;i<=n;i++) cin>>num[i].a>>num[i].b;
sort(num+1,num+n+1,cmp);
__int128 x=num[0].a;
for(int i=1;i<=n;i++)
{
ans=max(x/num[i].b,ans);
x*=num[i].a;
}
print(ans);
}
60 PTS。(不会是__int128写法出错了吧)
回复
共 3 条回复,欢迎继续交流。
正在加载回复...