一般直角三角形三边可以表示为:
m^2-n^2 、2*m*n、m^2+n^2
#include <iostream> #include <cmath> using namespace std; #define MAX 18 struct node{ long long a,b,c; }point[MAX+1]; int main() { long long temp,n=1; double temp1,val; for (int i=1;i<=MAX;i++) { val=2*n*n+1; temp1=sqrt(val); temp=sqrt(val); if (temp==temp1) { long long t=2*temp*n; point[i].a=t+val-1; point[i].b=t+val ; point[i].c=point[i].b+val-1; }else{ val-=2; temp1=sqrt(val); temp=sqrt(val); if (temp==temp1) { long long t=2*temp*n; point[i].b=t+val+1; point[i].a=t+val ; point[i].c=point[i].a+val+1; } } n+=temp; } int t,a; cin>>t; while(t--){ cin>>a; cout<<point[a].a<<" "<<point[a].b<<" "<<point[a].c<<endl; } return 0; }