有大佬帮我看看哪里出了问题
查看原帖
有大佬帮我看看哪里出了问题
1256312
cdxxx04楼主2024/6/23 13:51

80 fen

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5,M=1e4+5;
using LL=long long;
int n;
struct node{
	LL left,right;
}a[N];
struct number{
	short num[M];	int k;
	void clean(){memset(num,0,sizeof(num));	k=0;}
	void out(){
        if(k==0){putchar('0');return;}
		int tk=k+1;
		while(--tk)	putchar('0'+num[tk]);
	}
};
bool cmp(node x,node y){return x.left*x.right<y.left*y.right;}
bool max(number x,number y){
    if(x.k<y.k)	return false;
    if(x.k>y.k)	return true;
    for(int i=x.k;i>=1;i--)
        if(x.num[i]<y.num[i])	return false;
        else	if(x.num[i]>y.num[i])	return true;
    return false;
}
number turn(LL x){
    number ans;
    ans.clean();
    while(x){
        ans.num[++ans.k]=x%10;
        x/=10;
    }
    return ans;
}
number chen_fa(number x,LL y){
    number ans;	ans.clean();
    int tk=x.k+turn(y).k+1;	ans.k=tk;
    for(int i=1;i<=tk;i++)
        ans.num[i]=x.num[i]*y;
    for (int i=1;i<=tk;i++){
        ans.num[i+1]+=ans.num[i]/10;
        ans.num[i]%=10;
    }
    while(ans.num[ans.k]==0&&ans.k)    ans.k--;
    return ans;
}
number chu_fa(number x,LL y){
    number ans;	ans.clean();
    int tk=x.k;	ans.k=tk;	LL tc=0;
    for(int i=tk;i>=1;i--){
        tc*=10;	tc+=x.num[i];
        if(tc>=y)	ans.num[i]=tc/y,tc%=y;
    }
    while(ans.num[ans.k]==0&&ans.k)    ans.k--;
    return ans;
}
number sum,ans;
int main(){
	cin>>n;
	for(int i=0;i<=n;i++)	cin>>a[i].left>>a[i].right;
	sort(a+1,a+n+1,cmp);
	sum=turn(a[0].left);
	for(int i=1;i<=n;i++){
        if(a[i].right==0)   continue;
		number t=chu_fa(sum,a[i].right);
		if(max(t,ans))	ans=t;
        sum=chen_fa(sum,a[i].left);
	}
	ans.out();
}
2024/6/23 13:51
加载中...