NC200580. 勾股定理
描述
输入描述
第一行一个数字,表示样例个数。
其中每个样例:
仅包含一行一个整数。
输出描述
每个样例输出一行。
如果存在符合条件的,请输出任意一组解,两个整数之间以空格分隔。
如果不存在任何符合条件的解,请输出`-1 -1`。
示例1
输入:
3 4 6 13
输出:
5 3 8 10 12 5
说明:
答案不唯一,只要输出符合题意即可通过。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'; } }