有一个面积为n×m米的矩形广场,问至少要用多少个边长为a米的正方形花岗岩石板(granite flagstone)铺满这个广场?不允许切割石板。 输入三个[1,10^9^]的整数m,n,a,输出问题的答案。(例:输入6,6,4,输出4)
很简单,广场的长和宽分别是m和n,那么要铺满广场,每行至少要m/a或m/a+1个石板,每列至少要n/a或n/a+1个石板(何时需要+1看m和n能否被a整除即可),两者相乘就是所需最少石板数。 **要注意的是极限值的问题。**当m和n都等于10^9^,a等于1时,问题的答案达到了10^18^,因此需要用long long类型变量存储问题答案。
#include<iostream>
using namespace std;
int main()
{
int m, n, a;
long long res1, res2;//定义为long long之后,其乘积也为long long
while (cin >> m >> n >> a)
{
if (m%a == 0)
res1 = m / a;
else
res1 = m / a + 1;
if (n%a == 0)
res2 = n / a;
else
res2 = n / a + 1;
cout << res1 * res2 << endl;
}
return 0;
}