0
点赞
收藏
分享

微信扫一扫

HDU 6441 Find Integer 费马大定理

一ke大白菜 2022-03-11 阅读 32
  • 注意:选择的 ret / i 和 i 相当于 (c +b) 和 (c - b),它俩的和还需满足是偶数。

accode:

#include <stdio.h>
typedef long long ll;
ll a, b, c, n;
inline ll max(ll x, ll y){return (x > y) ? x : y;}

int main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        scanf("%lld %lld", &n, &a);
        if(n == 0 || n > 2)
            printf("-1 -1\n");
        else if(n == 1)
            printf("1 %lld\n", a + 1);
        else
        {
            ll ret = 1ll * a * a;
            for(ll i = 1; i <= a; i++)
            {
                if(ret % i == 0 && ret % (ret / i) == 0 && i != ret / i && (ret / i + i) % 2 == 0)
                {
                    c = (i + ret / i) / 2;
                    b = max(i, ret / i) - c;
                    break;
                }
            }
            printf("%lld %lld\n", b, c);
        }
    }
        
    return 0;
}
举报

相关推荐

0 条评论