有一个面积为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 longwhile (cin >> m >> n >> a){if (m%a == 0)res1 = m / a;elseres1 = m / a + 1;if (n%a == 0)res2 = n / a;elseres2 = n / a + 1;cout << res1 * res2 << endl;}return 0;
}