题目
题目背景
为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域铺上一些正方形地毯。
题目描述
这片矩形区域长 a 米,宽 b 米。地毯为边长为 c 米的正方形。
他想要知道,在地毯不进行裁切且两两不重叠的前提下,能否使用若干张这种地毯铺满整个矩形,如果可以铺满,那么铺满整个矩形需要多少张地毯。
输入格式
输入共一行,为三个正整数 a,b,c,分别表示矩形区域的长、宽和地毯的边长。
输出格式
输出共一行。
如果无法使用若干张这种地毯铺满整个矩形,输出一行一个 -1
。
如果可以使用若干张这种地毯铺满整个矩形,输出一行一个正整数,代表铺满整个矩形需要的地毯的数量。
输入输出样例
输入 #1复制
20 15 5
输出 #1复制
12
说明/提示
样例 1 解释
将地毯按如下方式放置 1212 张即可铺满整个矩形。
数据规模与约定
对于所有测试点:1≤a,b≤10的18次方,1≤c≤10的18次方。保证如果存在答案,最终答案不超过 10的18次方。
测试点 | a,b | c | 特殊性质 |
---|---|---|---|
1,2 | ≤10的3次方 | ≤10的3次方 | 无 |
3,4 | ≤10的18次方 | =1 | 无 |
5 | 10的18次方 | 10的18次方 | 保证 a,b<c |
6∼10 | 10的18次方 | 10的18次方 | 无 |
这道题虽然是分支结构的题,但是10的18次方超出了int的范围(-2147483648~2147483647),也超了long long,这时候就要用unsigned long long了。
但我们习惯用int,所以
#define int unsigned long long
上代码!
//B3697 [语言月赛202301] 铺地毯
#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
int a,b,c;
signed main(){
cin >> a >> b >> c;
if(a%c==0&&b%c==0) cout << (a/c)*(b/c);
else cout << -1;
return 0;
}
ok,AC!