HDU 6441(费马大定理+奇偶数列法)

思路:由费马大定理知a^n+b^n=c^n当n>2时无整数解,所以n==0和n>2时输出-1 -1,n==1时输出1,a+1,n==2时,由奇偶数列法

https://blog.csdn.net/Dilly__dally/article/details/82081922)知a为奇数时,b=n*n+(n+1)*(n+1)-1,c=b+1;a为偶数时,b=n*n,c=b+2 求解

 

#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
const int maxn=200005;
const double eps=1e-8;
const double PI = acos(-1.0);
#define lowbit(x) (x&(-x))
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n,a;
        scanf("%d %d",&n,&a);
        if(n>2||n==0)
        {
            printf("-1 -1\n");
        }
        else if(n==1)
        {
            printf("1 %d\n",a+1);
        }
        else if(n==2)
        {
            if(a%2)
            {
                n=(a-1)/2;
                printf("%d %d\n",n*n+(n+1)*(n+1)-1,n*n+(n+1)*(n+1));
            }
            else
            {
                n=a/2;
                printf("%d %d\n",n*n-1,n*n+1);
            }
        }
    }
    return 0;
}

 

posted @ 2018-08-26 16:42  MCQ  阅读(148)  评论(0编辑  收藏  举报