求助帖
查看原帖
求助帖
1116212
Swan416ya楼主2024/1/12 16:11

这个错在哪啊ww

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long long x,y,L,R;
int check(long long i)
{
    //printf("现在开始check啦!\n");
    for(long long a=1;1;a++)
    {
        for(long long b=1;1;b++)
        {
            //printf("a=%d,b=%d\n",a,b);
            if(pow(x,a)+pow(y,b)==i)
                return 0;
            if(pow(x,a)+pow(y,b)>i)
                break;
        }
        if(pow(x,a)>i)
            break;
    }
    return 1;
}


int main()
{
    scanf("%lld%lld%lld%lld",&x,&y,&L,&R);
    long long l=0,r=0,max=0,flag=0;
    for(long long i=L;i<=R;i++)
    {
        //printf("i=%d时:\n",i);
        int s=check(i);
        //printf("s=%d\n",s);
        if(s==1&&flag==0)
        {
            flag=1;
            l=i;
        }
        if(s==0&&flag==1)
        {
            flag=0;
            r=i;
            //printf("结束力 这个长度是%d\n",r-l);
            if(r-l>max)
                max=r-l;
        }
        if(i==R&&flag==1)
        {
            if(R-l+1>max)
                max=R-l+1;
        }
    }
    printf("%lld\n",max);
    return 0;
}

2024/1/12 16:11
加载中...