菜鸡求助为什么CE了
  • 板块学术版
  • 楼主Kniqht
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/9/7 22:00
  • 上次更新2023/10/27 12:18:51
查看原帖
菜鸡求助为什么CE了
315205
Kniqht楼主2022/9/7 22:00

在线ide显示terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=2e4+10;
int n,div1[N],divans[N];
struct Node{
    int x,y;
}a[N];
bool cmp(Node x1,Node y1){return x1.x*x1.y<y1.x*y1.y;}
string multi(string x1,string x2){
    reverse(x1.begin(),x1.end());
    reverse(x2.begin(),x2.end());
    int l1=x1.size(),l2=x2.size();
    memset(div1,0,sizeof(div1));
    for(int i=0;i<l1;i++)
        for(int j=0;j<l2;j++) div1[i+j]+=(x1[i]-'0')*(x2[j]-'0');
    for(int i=0;i<l1+l2;i++)
        if(div1[i]>=10){div1[i+1]+=div1[i]/10;div1[i]%=10;}
    string ans="";
    bool flag=false;
    for(int i=l1+l2-1;i>=0;i--){
        if(div1[i]==0&&!flag) continue;
        else{
            ans+=(div1[i]+'0');
            flag=true;
        }
    }
    return ans;
}
string get_div(string s1,int num){
    memset(div1,0,sizeof(div1));
    memset(divans,0,sizeof(divans));
    int len=s1.size();
    for(int i=0;i<len;i++) div1[i+1]=s1[i]-'0';
    int now=0,slen=1;
    for(int i=1;i<=len;i++){
        int k=now*10+div1[i];
        divans[i]=k/num;
        now=k%num;
    }
    while(divans[slen]=='0'&&slen<=len) slen++;
    string res="";
    for(int i=slen;i<=len;i++) res+=divans[i]+'0';
    return res;
}
string mx(string x1,string y1){
    int l1=x1.size(),l2=y1.size();
    return l1==l2?(x1>y1?x1:y1):(l1>l2?x1:y1);
}
string cstr(int num){
    string str="";
    while(num){
        str+=char(num%10+'0');
        num/=10;
    }
    reverse(str.begin(),str.end());
}
int main(){
    scanf("%d",&n);
    for(int i=0;i<=n;i++)
        scanf("%d%d",&a[i].x,&a[i].y);
    sort(a+1,a+n+1,cmp);
    string ans="0",mul=cstr(a[0].x);
    for(int i=1;i<=n;i++){
        ans=mx(ans,get_div(mul,a[i].y));
        mul=multi(mul,cstr(a[i].x));
    }
    cout<<ans;
	return 0;
}
2022/9/7 22:00
加载中...