728x90
https://www.acmicpc.net/problem/4563
4563번: 리벤지 오브 피타고라스
피타고라스의 정리는 직각삼각형의 세 변의 관계를 나타내는 정리이다. 빗변의 길이를 C, 다른 두 변의 길이를 A, B라고 한다면 다음과 같은 식으로 쓸 수 있다. A2 + B2 = C2 세 변의 길이가 모두 자
www.acmicpc.net
피타고라스의 직각삼각형 식을 분해해 수를 구해주면 풀 수 있습니다.
#include <iostream>
#include <vector>
#include <array>
#include <algorithm>
#include <cmath>
using namespace std;
int main(void) {
while (true) {
// 입력
long long int A;
cin >> A;
// 입력이 0 이면 끝
if (A == 0) return 0;
// 카운트
int cnt = 0;
// A^2 + B^2 = C^2 -> A^2 = (C - B)(C + B)
// A^2
long long int pow_A = pow(A, 2);
// 순회하며 약수 쌍 구하기
for (long long int i = 1; i <= A - 1; i++) {
// i 가 약수면
if (pow_A % i == 0) {
// (C-B) = i, (C+B) = pow_A/i ( (C-B) < (C+B) , i < pow_A/i )
// 2B = pow_A/i - i
// (pow_A/i - i) 가 2의 배수여야 자연수 가능
// B가 2의 배수고 A 보다 크면
if ((pow_A / i - i) % 2 == 0 and (pow_A / i - i) / 2 > A) {
cnt += 1;
}
}
}
cout << cnt << "\n";
}
}
728x90
'Coding Test > BaekJoon_C++' 카테고리의 다른 글
백준 1858 <기울기가 가장 큰 두 점> C++ (1) | 2024.04.20 |
---|---|
백준 22870 <산책 (large)> C++ (0) | 2024.04.17 |
백준 14285 <간선 끊어가기> C++ (0) | 2024.04.10 |
백준 5551 <쇼핑몰> C++ (0) | 2024.04.09 |
백준 5719 <거의 최단 경로> C++ (0) | 2024.04.04 |