반응형
https://www.acmicpc.net/problem/9094
문제
두 정수 n과 m이 주어졌을 때, 0 < a < b < n인 정수 쌍 (a, b) 중에서 (a2+b2+m)/(ab)가 정수인 쌍의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, n과 m이 주어진다. 두 수는 0보다 크고, 100보다 작거나 같다.
출력
각 테스트 케이스마다 문제의 조건을 만족하는 (a, b)쌍의 개수를 출력한다.
예제 입력 1 복사
3
10 1
20 3
30 4
예제 출력 1 복사
2
4
5
풀이
1. (a2+b2+m)/(ab)가 정수인 쌍의 개수를 구하는 것이기 때문에 결과값이 실수인지 정수인지 판별하는것이 이문제의 포인트다.
코드
#include <iostream>
#include <cmath>
#include <cctype>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int test;
cin>>test;
for(int i=0; i<test; i++){
double n,m,a;
cin>>n>>m;
int cnt=0;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(i<j){
a = ((i*i+j*j+m)/(i*j));
// a의 값이 정수인지 실수인지 판별
if(abs(a - (int)a < 1e-12)){
cnt++; // 맞다면 카운트
}
}
}
}
cout<<cnt<<"\n";
}
return 0;
}
|
cs |
반응형
'백준 > C++' 카테고리의 다른 글
[BaeKJoon/C++] 백준 3460 c++ 이진수 (0) | 2022.02.13 |
---|---|
[BaeKJoon/C++] 백준 2581 c++ 소수 (0) | 2022.02.12 |
[BaeKJoon/C++] 백준 4447 c++ 좋은놈 나쁜놈 (0) | 2022.02.10 |
[BaeKJoon/C++] 백준 1259 c++ 팰린드롬수 (0) | 2022.02.09 |
[BaeKJoon/C++] 백준 5671 c++ 호텔 방 번호 (0) | 2022.02.08 |