首页 > 代码库 > 未完成

未完成

#include <ctype.h>#include <cstdio>typedef long long LL;void read(LL &x){    x=0;bool f=0;    register char ch=getchar();    for(;!isdigit(ch);ch=getchar()) if(ch==-) f=1;    for(; isdigit(ch);ch=getchar()) x=(x<<3)+(x<<1)+ch-0;    x=f?(~x)+1:x;}LL exgcd(LL a,LL b,LL &x,LL &y){    if(b==0)    {        x=1;        y=0;        return a;    }    LL ans=exgcd(b,a%b,x,y);    LL tmp=x;    x=y;    y=tmp-a/b*y;    return ans;    }LL max(LL a,LL b) {return a>b?a:b;}LL min(LL a,LL b) {return a>b?b:a;}LL a,b,c,ans,Max,Min=0x7fffffff;bool solve(LL a,LL b,LL c){    LL x1,y1;    LL gcd=exgcd(a,b,x1,y1);    if(c%gcd) return false;    LL x0=x1*c/gcd,y0=y1*c/gcd,kx=b/gcd,ky=-a/gcd;    int i=0;    LL v=c-x0;    if(v==y0)    {        ans++;        v==0?Max=max(Max,2):Max=max(Max,1);        v==0?Min=min(Min,2):Min=min(Min,1);    }    for(i=1;x0+kx*i<=c;i++)     {        LL v=c-(x0+kx*i);        if((v-y0)%i==0&&(v-y0)/i==ky)        {            ans++;            Max=max(Max,x0+kx*i+y0+ky*i);            Min=min(Min,x0+kx*i+y0+ky*i);        }    }    return true;}int main(){    read(a);    read(b);    read(c);    if(!(solve(a,b,c))) printf("-1 -1\n0");    else printf("%d %d\n%d",Min,Max,ans);}

 

未完成