개발 공부/TIL(Today I Learned)

99클럽 코테 스터디 0일차 TIL 37일차 수학적 호기심

애해 2024. 8. 28. 10:45
728x90

# 오늘의 학습 키워드 

완전탐색

 

# 오늘의 문제 

두 정수 n과 m이 주어졌을 때, 0 < a < b < n인 정수 쌍 (a, b) 중에서 (a2+b2+m)/(ab)가 정수인 쌍의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, n과 m이 주어진다. 두 수는 0보다 크고, 100보다 작거나 같다.

출력

각 테스트 케이스마다 문제의 조건을 만족하는 (a, b)쌍의 개수를 출력한다.

 

# 나의 풀이방식 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());

        for (int i = 1; i <= T; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(st.nextToken());
            int m = Integer.parseInt(st.nextToken());
            int count = 0;

            for (int a = 1; a < n; a++) {
                for (int b = a + 1; b < n; b++) {
                    int numerator = (a * a) + (b * b) + m;
                    int denominator = a * b;
                    
                    // Check if the numerator is divisible by the denominator
                    if (numerator % denominator == 0) {
                        count++;
                    }
                }
            }
            System.out.println(count);
        }
    }
}

 

반응형