题目大意
有一个
n
×
m
n \times m
n×m的矩阵,你需要用若干个
a
×
a
a \times a
a×a的正方形填满ta。
正方形不能切割,可以超出这个矩阵,但不能少。
解题思路
显然,我们会:
或,这样:
对于第一种情况,共
n
a
×
m
a
\frac{n}{a} \times \frac {m}{a}
an×am个;
对于第二种情况,共
(
n
a
可
能
+
1
)
×
(
m
a
可
能
+
1
)
(\frac{n}{a}可能+1) \times (\frac {m}{a}可能+1)
(an可能+1)×(am可能+1)个。
总结一下,其实多出的部分可以用向上取整(C/C++/Pascal中的ceil函数)计算,或者用多个if计算。
则,对于所有情况,共
⌈
n
a
⌉
×
⌈
m
a
⌉
\lceil \frac{n}{a} \rceil \times \lceil \frac{m}{a} \rceil
⌈an⌉×⌈am⌉个。
代码实现
#include <bits/stdc++.h>
using namespace std;
int main() {
long long n, m, a; // 不开long long见祖宗
cin >> n >> m >> a;
n = ceil(n * 1.0 / a); // 这里相当于自动转化为整形,直接放到输出那里要加强转哒~
m = ceil(m * 1.0 / a);
cout << n * m << '\n';
return 0;
}
Goodbye,大家明天(可能是今天,可能是后天,可能是 n ( n ∈ Z ) n(n \in Z) n(n∈Z)天后)再见鸭~