列表

详情


NC25129. 勾股定理

描述

给出直角三角形其中一条边的长度n,你的任务是构造剩下的两条边,使这三条边能构成一个直角三角形。

输入描述

一个整数n。

输出描述

另外两条边b,c。答案不唯一,只要输出任意一组即为合理,如果无法构造请输出-1。

示例1

输入:

3

输出:

4 5

示例2

输入:

4

输出:

3 5

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 4ms, 内存消耗: 512K, 提交时间: 2022-01-12 22:33:24

#include<stdio.h>
int main()
{
	long long a,b=0,c=0;
	scanf("%lld",&a);
	if(a%2!=0)
	{
		b=(a*a-1)/2;
		c=b+1;
	}
	else {
		c=(a*a)/4+1;
		b=c-2;
		}
		if(b==0||c==0)printf("-1");
		else printf("%lld %lld",b,c);
   return 0;
}

C(clang 3.9) 解法, 执行用时: 4ms, 内存消耗: 484K, 提交时间: 2020-04-08 17:53:49

#include<stdio.h>
main()
{
	long long b,c,a;
	scanf("%lld",&a);
	if(a==0||a==1||a==2){
		printf("-1");
		return 0;
	}
	if(a%2)
	{
		b=1;c=a*a;
	}
	else
	{
		b=2;c=a*a/2;
	}
	printf("%lld %lld",(c-b)/2,(c+b)/2);
}

pypy3(pypy3.6.1) 解法, 执行用时: 132ms, 内存消耗: 18588K, 提交时间: 2020-04-08 16:57:53

n = int(input())
if(n <= 2):
    print(-1)
elif (n & 1):
    print((n * n + 1) // 2 - 1, (n * n + 1) // 2)
else:
    print((n * n + 4) // 4 - 2, (n * n + 4) // 4)

Python3(3.5.2) 解法, 执行用时: 30ms, 内存消耗: 3552K, 提交时间: 2019-09-06 22:21:15

n=int(input())
if n<=2:
	print(-1)
elif n&1:
	n>>=1
	print(2*n*n+2*n,2*n*n+2*n+1)
else:
	n>>=1
	print(n*n-1,n*n+1)

上一题