#include <iostream>
using namespace std;
int main()
{
int h, w, n, m;
cin >> h >> w >> n >> m;
int col, row;
if(h%(n+1) != 0) col = (h/(n+1)) + 1;
else col = (h/(n+1));
if((w%(m+1)) != 0) row = (w/(m+1)) + 1;
else row = (w/(m+1));
cout << col * row;
return 0;
}
완전 탐색 돌리면 될 ..듯?
일단 2차 배열 만들고. n번째 칸 줄을 비우고.
예를 들어, 세로로 2칸을 띄워야 한다면 3, 4, 6, 7칸 비우는 식.
그리고 가로도 똑같이 해줌.
비우는 걸 false로 해서, true인 칸 개수를 출력하면 되지 않을까?
생각을 해보자.
20명에서 6명이 나온 원리.
세로 5줄, 가로 4줄. n줄씩 띄어 앉으니까 (h/1+n) + 1 = 앉을 수 있는 세로 줄.
가로줄도 마찬가지겠지?
단, 나누어 떨어지면 +1 안해도 됨
둘이 곱하면 되겠군...
나누어 떨어지면 +1 하지 않는다는 걸 수학적으로 말하면 반올림;;;이다.
ceil()을 알았으면 한 줄로 끝날 수도 있었던 문제!
cout << ceil(h / (n+1)) * ceil(w / (m+1));