题目
翻译
题目
首都柏林的剧院广场是一个n×m 的矩形。在城市周年纪念之际,决定用方形的花岗岩石板铺砌广场,每个石板大小为a×a。
最少需要多少石板才能铺砌完广场?允许覆盖面积大于广场面积,但是必须覆盖广场。不允许破坏石板,石板的侧边需要与广场的侧边平行。
输入
一行输入3个整数:n,m和a(1 ≤ n,m,a ≤ 109)
输出
输出所需要的石板个数
分析
只需知道首行和首列各需要的最少石板数,相乘,可得所需要的总石板数,由于本题中(1 ≤ n,m,a ≤ 109)而当n和m值为10^9,而a值为为1时,所需的石板数,使用int类型会溢出,导致结果错误。所以需要定义 long long型。其中最少石板数为商或商+1,前者为整除,后者为有余数。
int : -2147483648 ~ 2147483647
long : -2147483648~2147483647
long long :-9223372036854775808~9223372036854775807
代码
#include<iostream>
using namespace std;
int main()
{
long long n, m, a;
cin >> n >> m >> a;
cout << (n % a > 0 ? n / a + 1 : n / a) * (m % a > 0 ? m/ a + 1 : m / a);
return 0;
}