Notice
Recent Posts
Recent Comments
Link
삐까냥의 파도타기
3233. 정삼각형 분할 놀이 본문
이렇게 쉬워도 되나 싶을 정도로
간단한 문제네요.
우선 수학을 아셔야 합니다.
B에서 주목해야 합니다.
B는 A의 약수이기 때문에 B로 나누어 주면
결국
(A / B) : 1의 형태가 됩니다.
그렇다면 (A / B)의 값에 따른 정삼각형 개수를 세주면 되는데,
정삼각형의 각 층은 1개, 3개, 5개... 로 증가합니다.
일반항은 2n -1 가 되죠?
시그마 (2n - 1)을 해주면
n의 2승이 나옵니다.
결국 우리가 구해야 하는 값은
(A / B)의 2승 입니다.
이해 되죠?
다만 int로 하면 오버플로우가 일어나서, long가 처리했습니다.
import java.util.Scanner; public class Q3233 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int testCase = sc.nextInt(); for (int i = 1; i <= testCase; i++) { int A = sc.nextInt(); int B = sc.nextInt(); long result = getResult(A, B); System.out.println("#" + i + " " + result); } }
static long getResult(int A, int B) { if (B != 1) { A /= B; } return (long)A * (long)A; } } |
'코딩 > SW Expert Academy' 카테고리의 다른 글
2817. 부분 수열의 합 (0) | 2018.03.15 |
---|---|
3131. 100만 이하의 모든 소수 (0) | 2018.03.15 |
1865. 동철이의 일 분배 (0) | 2018.03.13 |
3750. Digit sum (0) | 2018.03.12 |
1873. 상호의 배틀필드 (0) | 2018.03.11 |