列表

详情


NC200580. 勾股定理

描述

给定一个整数A。
求是否存在两个整数B,C使得长度为A,B,C的三条边可以组成一个直角三角形。

输入描述

第一行一个数字,表示样例个数。 
其中每个样例:
仅包含一行一个整数

输出描述

每个样例输出一行。 
如果存在符合条件的,请输出任意一组解,两个整数之间以空格分隔。
如果不存在任何符合条件的解,请输出`-1 -1`。


示例1

输入:

3
4
6
13

输出:

5 3
8 10
12 5

说明:

答案不唯一,只要输出符合题意即可通过。

原站题解

import java.util.Scanner;
public class Main {
public static void main(String[] arg) {
Scanner scanner = new Scanner(System.in);
// todo
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

C(clang 3.9) 解法, 执行用时: 2ms, 内存消耗: 376K, 提交时间: 2020-07-31 14:21:34

#include<stdio.h>
main()
{
long long t,i,j,k1,k2,r,c,m,a,b;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%lld",&m);
if(m%2==0)
{
a=m/2;
printf("%lld %lld\n",a*a-1,a*a+1);
}
else
{
a=m/2;
printf("%lld %lld\n",2*a*a+2*a+1,2*a*a+2*a);
}
}
}

C++11(clang++ 3.9) 解法, 执行用时: 7ms, 内存消耗: 372K, 提交时间: 2020-02-26 20:43:18

#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--)
{
long long A,B,C;
cin>>A;
if(A&1)
B=(A*A+1)/2,C=(A*A-1)/2;
else
B=(A*A+4)/4,C=(A*A-4)/4;
cout<<B<<" "<<C<<endl;
}
return 0;
}

C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 332K, 提交时间: 2020-04-29 15:20:37

#include<iostream>
int main(){
long long T,A;
std::cin>>T;
while(T--){
std::cin>>A;
if(A&1) std::cout<<(A*A+1)/2<<" "<<(A*A-1)/2<<'\n';
else std::cout<<(A*A+4)/4<<" "<<(A*A-4)/4<<'\n';
}
}

上一题