[BOJ 4563] 리벤지 오브 피타고라스
2024. 11. 19. 12:49ㆍBaekjoon
728x90
- 문제 요약
A^2 + B^2 = C^2
피타고라스 정리에서 A(2<=A<2^20)가 주어졌을 때, 빗변의 길이 C가 자연수인 직각삼각형을 만드는 자연수 B(B>A)의 개수를 구하시오.
(입력은 여러 개의 테스트케이스로 이루어져 있으며, 입력의 마지막 줄에는 0이 하나 주어진다.)
- 알고리즘 정리
피타고라스 정리 수식을 변형해서 문제를 해결할 수 있습니다.
A^2 + B^2 = C^2
A^2 = C^2 - B^2 = (C+B)(C-B) = x * y
(A^2의 약수에서 조건 설정 후 걸러내기)
- 코드 작성
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int result;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
while(true){
ll a;
cin>>a;
if(a==0){
return 0;
}
result=0;
ll powa=pow(a,2);
for(ll i=1;i<=a-1;i++){
if(powa%i==0){
ll w=powa/i-i;
if(w%2==0 && w/2>a){
result++;
}
}
}
cout<<result<<endl;
}
}

728x90
'Baekjoon' 카테고리의 다른 글
[BOJ 19951] 태상이의 훈련소 생활 (1) | 2024.11.21 |
---|---|
[BOJ 10453] 문자열 변환 (1) | 2024.11.19 |
[BOJ 2631] 줄 세우기 (0) | 2024.11.19 |
[BOJ 14728] 벼락치기 (0) | 2024.11.19 |
[BOJ 9084] 동전 (2) | 2024.11.18 |