暴力万碎
#include <bits/stdc++.h> using namespace std; int main(){ long long a,b,c,n,step=0; cin>>n; for(long a=1;a<=n;a++) for(long b=1;b<=n;b++) for(long c=1;c<=n;c++) if(pow(a,2)+pow(b,2)==pow(c,2)&&1<=a&&a<=b&&b<=c&&c<=n) step++; cout<<step; }
最优解
#include <bits/stdc++.h> using namespace std; int main(){ int n,step=0; cin>>n; for(int i=1;i<=n;i++) for(int j=i;j<=n;j++){ if(sqrt(i*i+j*j)-(int)sqrt(i*i+j*j)==0&&sqrt(i*i+j*j)<=n)step++; } cout<<step; }