[백준 11320] 삼각 무늬 - 1 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
한 변의 길이가 A
인 정삼각형을,
한 변의 길이가 B
인 정삼각형 여러 개로 완전히 덮기 위해 필요한 최소 개수를 구하는 문제입니다.
문제에서 주어지는 조건은 다음과 같습니다:
B
는A
보다 작거나 같다.A
는B
로 나누어떨어진다.
즉, 큰 정삼각형을 작은 정삼각형들로 완벽히 겹치거나 격자처럼 채워넣는 상황을 가정할 수 있습니다.
접근법
- 큰 삼각형의 각 변을 따라 작은 삼각형을 나열할 수 있는 개수는
A / B개
입니다:
이는 작은 삼각형의 한 변의 길이B
가 큰 삼각형의 한 변A
를 정확히 나누기 때문입니다. - 한 줄에
A / B개
의 작은 삼각형이 배치되고,
같은 방식으로 총A / B줄
이 쌓이게 되므로, -
최종적으로 필요한 삼각형의 개수는 다음과 같이 계산됩니다:
\[\left( \frac{A}{B} \right)^2\] - 각 테스트케이스마다 위 수식을 계산한 결과를 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
class Program {
static void Main() {
int t = int.Parse(Console.ReadLine());
while (t-- > 0) {
var input = Console.ReadLine().Split();
int a = int.Parse(input[0]);
int b = int.Parse(input[1]);
int div = a / b;
int res = div * div;
Console.WriteLine(res);
}
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t; cin >> t;
while (t--) {
int a, b; cin >> a >> b;
int div = a / b;
int ans = div * div;
cout << ans << "\n";
}
return 0;
}