B3845题解

· · 题解

描述一下:勾股数是很有趣的数学概念。如果三个正整数 a,b,c,满足 a 2 +b 2 =c 2 ,而且 1≤a≤b≤c,我们就将 a,b,c 组成的三元组 (a,b,c) 称为勾股数。你能通过编程,数数有多少组勾股数,能够满足 c≤n 吗?
如果你学过循环嵌套,那就应该知道双层循环。不过我们今天要用到三层循环。
像这样:

for(int i=1;i<=n;i++){
        for(int j=i;j<=n;j++){
            for(int a=j;a<=n;a++){

如果把i×i+j×j=a×a加到if里,程序就完成大半了
这是完整的程序

#include<bits/stdc++.h>
using namespace std;
int n;
int main() {
    cin>>n;
    int sum=0;
    for(int i=1;i<=n;i++){
        for(int j=i;j<=n;j++){
            for(int a=j;a<=n;a++){
                if(i*i+j*j==a*a){
                    sum++;
                }
            }
        }
    }
    cout<<sum;
}

谢谢观看。