2018 CCPC 网络赛 1004 Find Integer | 费马大定理+奇偶数列

题目:

                                  Find Integer

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 6597    Accepted Submission(s): 1852
Special Judge

Problem Description

people in USSS love math very much, and there is a famous math problem .

give you two integers n ,a ,you are required to find 2 integers b ,c such that an +bn=cn .

 

 

Input

one line contains one integer T ;(1≤T≤1000000)

next T lines contains two integers n ,a ;(0≤n≤1000 ,000 ,000,3≤a≤40000)

 

 

Output

print two integers b ,c if b ,c exits;(1≤b,c≤1000 ,000 ,000) ;

else print two integers -1 -1 instead.

 

 

Sample Input

1 2 3 

 

Sample Output

4 5

 


题解:

链接:费马大定理 及在程序设计竞赛中的应用

(奇偶数列法指 勾股数)


代码实现:

#include <bits/stdc++.h>

int main()
{
    int q;
    scanf("%d",&q);
    long long int a,n,b,c;
    for(;q;q--){
        scanf("%lld %lld",&n,&a);
         
         if(n==1){
             printf("1 %lld\n",a+1);
         }else 
         if(n==2){
             if(a%2==0){
                 a=(a-2)/2;
                 c=1+(a+1)*(a+1);
                 b=c-2;
                 printf("%lld %lld\n",b,c);
             }else if(a%2==1){
                 a=(a-1)/2;
                 c=a*a+(a+1)*(a+1);
                 b=c-1;
                 printf("%lld %lld\n",b,c);
             }
         } else {
             printf("-1 -1\n");
         }
    }
    }

 

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务