2018中国大学生程序设计竞赛 - 网络选拔赛---Find Integer!--hdu6441

问题传送门:https://vjudge.net/contest/320779#problem/D

介绍一个名词:奇偶数列法则

2018中国大学生程序设计竞赛 - 网络选拔赛---Find Integer!--hdu6441_第1张图片

Key part:

2018中国大学生程序设计竞赛 - 网络选拔赛---Find Integer!--hdu6441_第2张图片

 

 

#include
#include
#include
#include
using namespace std;
#define ll long long

int main()
{
    int t;
    ll a,b,c,n;
    scanf("%d",&t);
    while(t--)
	{
    	scanf("%lld%lld",&n,&a);
    	
    	if(n>2 || n==0)	printf("-1 -1\n");
    	else if(n==1)	printf("1 %lld\n",a+1);
    	else 		//an equation:a^2+b^2=c^2,we know a,find b,c?
		{				//a=2*m--->b=m^2-1,c=m^2+1 
    		ll m=a/2;	//a=2*m+1--->b=2*m*(m+1),c=2*m*(m+1)+1 m>=1
    		if(a&1)
			{
    			b=2*m*(m+1);
				c=2*m*(m+1)+1;
			}
			else
			{
				b=m*m-1;
				c=m*m+1;
			} 
			printf("%lld %lld\n",b,c);
		}
	}
}

  

 

转载于:https://www.cnblogs.com/dragondragon/p/11379905.html

你可能感兴趣的:(2018中国大学生程序设计竞赛 - 网络选拔赛---Find Integer!--hdu6441)