본문 바로가기

Algorithm/Math

(C++) - 백준(BOJ) 8246 : Stół

반응형

https://www.acmicpc.net/problem/8246

 

8246번: Stół

W jedynym wierszu wejścia znajdują się trzy liczby całkowite A, B i K (1 ≤ A, B, K ≤ 500 000 000) oznaczające, odpowiednio, wymiary blatu stołu oraz wymiar siedziska krzesła.

www.acmicpc.net

수학 공식을 찾아 출력하는 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

책상 가로와 세로 길이 a,b 그리고 정사각형 의자 한 변의 길이 k를 선언 후 입력받습니다.

📔 풀이과정

15 18 4의 경우

위 예제에서 정사각형 칸을 직사각형 책상에 최대로 채우는 경우를 살펴보면 (가로 / 의자 한 변) * (세로 / 의자 한 변)가 답이 됩니다. 여기서 원래 문제로 돌아가 최대로 채우는 경우 - 빈 공간의 정사각형 칸의 개수가 최종 답이 됩니다. 빈 공간은 (a/k - 2) * (b/k - 2)가 됩니다. 하지만 빈 공간은 뺄 필요가 없는 경우가 있습니다. 의자를 모두 채웠을 때 정사각형 칸이 비지 않는 경우가 있기 때문입니다. 이 경우에는 음수가 될 수 있으므로 0을 빼는 tricky한 방법으로 해결할 수 있습니다.

📔 정답출력

공식에 따라 답을 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int a, b, k;
int main(){
    cin >> a >> b >> k;
    cout << (a/k) * (b/k) - max(0, a/k - 2)*max(0, b/k - 2);
}