题解 CF707C 【Pythagorean Triples】

· · 题解

规律题,分类讨论即可

明眼人都知道,$3$ $4$ $5$是一组组合数 所以如果一个数能被$3$ $4$ $5$中某一个整除就能知道另外两个数 剩下的数有质数和被$2$整除的数但不被$4$整除的数 被$2$整除的数不断除以2就是质数 所以只考虑质数 考虑柿子 $$a^2+b^2=c^2$$ $$a^2=c^2-b^2$$ $$a^2=(c-b)\times(c+b)$$ 指定$c-b=1$,那么$c+b=a^2

所以初中数学解二元一次方程组

c=\frac{a^2+1}{2} b=\frac{a^2-1}{2}

把每个结论带入就是答案

代码:


ll x;cin>>x;
    if(x==1||x==2)puts("-1");
    else{
        if(x%3==0)printf("%lld %lld\n",x/3LL*4LL,x/3LL*5LL);
        else if(x%4==0)printf("%lld %lld\n",x/4LL*3LL,x/4LL*5LL);
        else if(x%5==0)printf("%lld %lld\n",x/5LL*3LL,x/5LL*4LL);
        else if(x%2==0){
            ll now=1;
            while(x%2==0)x/=2,now*=2;
            printf("%lld %lld\n",(x*x-1)/2*now,(x*x+1)/2*now);
        }
        else{
            printf("%lld %lld\n",(x*x-1)/2,(x*x+1)/2);
        }
    }