洛谷官网:www.luogu.com.cn
题目描述
勾股数是很有趣的数学概念。如果三个正整数 a,b,c,满足 a*a+b*b=c*c,而且 1≤a≤b≤c,我们就将 a,b,c 组成的三元组 (a,b,c) 称为勾股数。你能通过编程,数数有多少组勾股数,能够满足 c≤n 吗?
输入格式
输入一行,包含一个正整数 n。约定 1≤n≤1000。
输出格式
输出一行,包含一个整数 C,表示有 C 组满足条件的勾股数。
输入输出样例
输入 #1
5
输出 #1
1
输入 #2
13
输出 #2
3
解析:
1.输入:(右手就行!)
int C,sum=0;
cin>>C;
2.三重for循环:
for(int a = 3; a <= C; a++){
for(int b = 4; b <= C; b++){
for(int c = 5; c <= C; c++){
if(a * a + b * b == c * c && 1 <= a && a <= b && b <= c){
sum++;
}
}
}
}
(1)避免落掉哦,先a=1,然后b,c逐渐增加,这是一种枚举思想
3.三重for循环加条件判断:
(1)判断条件:满足 a*a+b*b=c*c,而且 1≤a≤b≤c
(2)语句为:
if(a * a + b * b == c * c && 1 <= a && a <= b && b <= c){
所以为:
for(int a = 3; a <= C; a++){
for(int b = 4; b <= C; b++){
for(int c = 5; c <= C; c++){
if(a * a + b * b == c * c && 1 <= a && a <= b && b <= c){
sum++;
}
}
}
}
总之,全部代码为:
#include<iostream>
using namespace std;
int main(){
int C, sum = 0;
cin >> C;
for(int a = 3; a <= C; a++){
for(int b = 4; b <= C; b++){
for(int c = 5; c <= C; c++){
if(a * a + b * b == c * c && 1 <= a && a <= b && b <= c){
sum++;
}
}
}
}
cout << sum;
return 0;
}
谢谢观看,点个赞吧!
(本人为初入萌新,大佬们勿喷,谢谢!!!)
1396

被折叠的 条评论
为什么被折叠?



