Theatre Square

Theatre Square
Codeforces easy

مطلوب منا تغطية شبكة أبعادها \(N \times M\) باستخدام بلاطات أبعادها \(A \times A\). يُسمح للبلاطات بأن تتجاوز حدود الشبكة، ولكن يجب أن تغطيها بالكامل.

الحل

عند حساب عدد البلاطات اللازمة لتغطية البعد العمودي للشبكة، نجد أنه يساوي \(\lceil \frac{N}{A} \rceil\)، وبالمثل، فإن عدد البلاطات اللازمة لتغطية البعد الأفقي يساوي \(\lceil \frac{M}{A} \rceil\).

وبالتالي، فإن العدد الإجمالي للبلاطات اللازمة لتغطية الشبكة كاملة هو: \(\lceil \frac{N}{A} \rceil \times \lceil \frac{M}{A} \rceil\).

تلميحالتقريب إلى الأعلى في القسمة الصحيحة

يُرمز إليه بـ \(\lceil \frac{A}{B} \rceil\)

ويُكتب في لغة ++C على النحو التالي: (A + B - 1) / B

#include <iostream>
using namespace std;

int main() {
    int n, m, a;
    cin >> n >> m >> a;

    long long v = (n + a - 1) / a;
    long long h = (m + a - 1) / a;

    cout << v * h;
}
تنبيهتجاوز السعةOverflow

إذا كانت قيم \(N, M = 10^9\) و \(A = 1\)، فستكون النتيجة \(N \times M = 10^{18}\). المتغير من نوع int سيتجاوز سعته، لذلك نحتاج إلى استخدام النوع long long.