10分求助!!!
查看原帖
10分求助!!!
1379108
shuaiqilzy楼主2024/7/3 18:33

TLE+MLE+WA+RE 大佬帮我看看怎么改

#include<bits/stdc++.h>
inline bool cmp(int x,int y)//比较两数大小
{
    int sa=0,sb=0;
    int a=x,b=y;
    while(a!=0)
    {
        a/=10;sa++;
    }
    while(b!=0)
    {
        b/=10;sb++;
    }
    if(sa!=sb)return false;
    a=x,b=y;
    int aa[10]={},bb[10]={},i=10;
    while(a!=0)
    {
        aa[i]=a%10;bb[i]=b%10;i--;
    }
    i=1;
    while(aa[i]!=bb[i]&&i<=10)i++;
    if(i>10)return false;
    if(aa[i]>bb[i])return true;
    else return false;
}
int main()
{
    int a,b,*c,*d;
    std::cin>>a>>b;
    if(cmp(a,b))std::swap(a,b);//使小数在前
    c=new int[2*b-2*a+1];//a+b的范围必定在2a~2b之间
    d=new int[2*b-2*a+1];
    for(int i=0;i<=2*b-2*a;i++)
    {
        d[i]=2*a+i;c[i]=i+a;//a+b=c则c-a=b,枚举c时每个c为2a+i,减去a后为a+i
    }
    int left=2*a,right=2*b,mid;
    do//二分查找
    {
        mid=(left+right)/2;
        if(c[mid]<b)left=mid;
        else if(c[mid]>b)right=mid;
    }while(c[mid]!=b);
    std::cout<<c[mid];
}
2024/7/3 18:33
加载中...