上海市计算机学会2022年10月月赛丙组解题报告
直角三角形的判定
题目描述
给定三个正整数表示三角形的三条边,请判定它是否为直角三角形
输入格式
第一行:三个整数 a,b 与 c
输出格式
若可以构成一个直角三角形,输出 Right Triangle
否则,输出 No
数据范围
1 ≤ a , b , c ≤ 1000 1 \leq a ,b,c \leq 1000 1≤a,b,c≤1000
样例输入1:
3 4 5
样例输出1:
Right Triangle
样例输入2:
3 3 3
样例输出2:
NO
分析
∙ \bullet ∙ 勾股定理直接判断三个数是否满足直角三角形三边条件即可
#include <bits/stdc++.h>
using namespace std;
int a , b , c;
int main(){
cin >> a >> b >> c;
int ga = a * a , gb = b * b , gc = c * c;
if((ga + gb == gc) || (ga + gc == gb) || (gb + gc == ga))
cout << "Right Triangle" << endl;
else
cout << "No" << endl;
return 0;
}
因子分解
题目描述
给定一个正整数 nn,请将它分解为素数的乘积。
例如 60 = 2 × 2 × 3 × 5 60=2\times2\times3\times5 60=2×2×3×5
输入格式
单个整数表示 n n n
输出格式
若干整数表示 n n n 的素因子,按照从小到大的顺序输出。
数据范围
2 ≤ n ≤ 1 , 000 , 000 , 000 2\leq n\leq 1,000,000,000 2≤n≤1,000,000,000
样例数据
输入:
60
输出:
2 2 3 5
输入:
3
输出:
3
分析
∙ \bullet ∙ 依次枚举 n n n 的因子直到相同为止最后输出 n n n
代码
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
for(int i = 2; i <= n; ++i)
while(n != i){
if(n % i == 0){
cout << i << " ";
n /= i;
}
else break;
}
cout << n << endl;
return 0;
}