A27727. 拼图(graph.cpp)问题描述 小明想用自己的打印机打印一幅宽为 W,高为 H 的画。然而他的打印机不够大,只能打出边长为 a 的正方形图片,他打算将画分割成很多个部分,每个部分都是长方形,且长方形的边与原来的画的边平行,长方形的每边长度都不超过 a。为了减小麻烦,小明希望最终分出的长方形数量最少。 请问他最少要分出多少个长方形?例如,当小明的画宽为 25,高为 15 时,若打印机可以打印的…
填空题
中等
知识点
题目描述
拼图(graph.cpp)
问题描述
小明想用自己的打印机打印一幅宽为 W,高为 H 的画。
然而他的打印机不够大,只能打出边长为 a 的正方形图片,他打算将画分割成很多个部分,每个部分都是长方形,且长方形的边与原来的画的边平行,长方形的每边长度都不超过 a。
为了减小麻烦,小明希望最终分出的长方形数量最少。 请问他最少要分出多少个长方形?
例如,当小明的画宽为 25,高为 15 时,若打印机可以打印的正方形的边长为 10,则至少要分出 6 个长方形。
输入格式
从文件 graph.in 中输入数据。
输入一行包含三个整数 W, H, a,意义如上所述。
输出格式
输出到文件 graph.out 中。
输出一行包含一个整数,表示答案。
样例输入
25 15 10
样例输出
6
评测用例规模与约定
注意:以下规模是评测时输入数据一定会满足的限制,在你的程序中不需要对这些限制进行检查。 对于所有评测用例,1 ≤ W ≤ 10000,1 ≤ H ≤ 10000,1 ≤ a ≤ 10000。
参考答案
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
freopen("graph.in", "r", stdin);
freopen("graph.out", "w", stdout);
int W, H, a;
cin >> W >> H >> a;
int row = ceil(1.0 * W / a); // 行
int col = ceil(1.0 * H / a); // 列
cout << row * col << endl;
return 0;
}
上一题
下一题