JAVA / Lv 0. 수학적 호기심 

 

문제

 

 

문제 해결


브루트포스는 완전탐색 종류 중의 하나이다
정수 쌍 (a,b)는 0 < a < b < n 조건으로 인해 n이 10이면
첫 반복문에서 a = 1, b = 2이다
(a^2+b^2+m) / (ab)의 값이 정수라면 result 1씩 올라간다

이때, 문제에서 주는 식 그대로 구현했다면 에러가 발생한다
해결할 수 있는 방법은 (a^2+b^2+m) % (ab) 나머지 연산을 하는 것이다!
int 변수에 정수가 담기니까 상관없겠다 생각했는데, 결과값 자체가 소숫점이면 안되기 때문에 (a^2+b^2+m) % (ab) == 0이 필요하다.


나의 풀이

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        // 0 < a < b < n
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        //입력
        //1.테스트 케이스(숫자)가 입력된다
        int T = Integer.parseInt(br.readLine());
        
        //로직
        //2. 1의 숫자만큼 반복문 생성.
        for(int i = 0; i < T; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(st.nextToken());
            int m = Integer.parseInt(st.nextToken());
            int result = 0;
            
            for(int a = 1; a < n; a++){
                for(int b = a + 1; b < n; b++){
                    if(((a * a) + (b * b) + m) % ( a * b ) == 0){
                        result++;
                    }
                }
            }
            
            System.out.println(result);
        }

    }
}

+ Recent posts