没有原因的编译错误??(P1080)
  • 板块灌水区
  • 楼主Endline
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/10/7 09:35
  • 上次更新2023/11/4 04:29:45
查看原帖
没有原因的编译错误??(P1080)
401052
Endline楼主2021/10/7 09:35
#include<bits/stdc++.h>
using namespace std;
int n,kl,kr;
struct number{
    int n[3002];
    int length;
    void out()
    {
        for(int i=length;i>=1;i--)
            cout<<n[i];
    }
}tmp,ans,add;
struct coin{
    int l,r;
}a[1002];
bool cmp(coin x,coin y)
{
    return x.l*x.r<y.l*y.r;
}
void times(int x)
{
    memset(add.n,0,sizeof(add.n));
    add.length=0;
    for(int i=1;i<=tmp.length;i++)
    {
        tmp.n[i]=tmp.n[i]*x;
        add.n[i+1]+=tmp.n[i]/10;
        tmp.n[i]%=10;
    }
    for(int i=1;i<=tmp.length+4;i++) {
        tmp.n[i]+=add.n[i];
        if(tmp.n[i]>=10) {
            tmp.n[i+1]+=tmp.n[i]/10;
            tmp.n[i]%=10;
        }
        if(tmp.n[i]!=0) {
            tmp.length=max(tmp.length,i);
        } 
    }
    return;
}
void muti(int x)
{
    memset(add.n,0,sizeof(add.n));
    add.length=0;
    int k=0;
    for(int i=tmp.length;i>=1;i--)
    {
        k*=10;
        k+=tmp.n[i];
        add.n[i]=k/x;
        if(add.length==0&&add.n[i]!=0)add.length=i;
        k%=x;
    }
    return;
}
bool compare()
{
    if(ans.length>add.length)return false;
    else if(ans.length<add.length)return true;
    else
    for(int i=ans.length;i>=1;i--)
    {
        if(ans.n[i]>add.n[i])return false;
        else if(ans.n[i]<add.n[i])return true;
    }
}
void change()
{
    memset(ans.n,0,sizeof(ans.n));
    ans.length=0;
    for(int i=add.length;i>=1;i--)ans.n[i]=add.n[i];
    ans.length=add.length;
    return;
}
int main()
{
    cin>>n;
    cin>>kl>>kr;
    for(int i=1;i<=n;i++)cin>>a[i].l>>a[i].r;
    sort(a+1,a+n+1,cmp);
    for(int i=1;kl!=0;i++)
    {
        tmp.n[i]=kl%10;
        kl/=10;
    }
    for(int i=1;i<=n;i++)
    {
        times(a[i-1].l);
        muti(a[i].r);
        if(compare())change();
    }
    ans.out();
    system("pause");
    return 0;
}

编译错误但没有原因awa

2021/10/7 09:35
加载中...