提问人:tarungaur 提问时间:7/16/2023 最后编辑:πάντα ῥεῖtarungaur 更新时间:7/16/2023 访问量:58
直接使用 cout 打印答案会给出错误的答案,而存储答案然后使用 cout 打印会被接受 [已关闭]
Printing answer directly using cout gives wrong answer, whereas storing the answer and then printing using cout get accepted [closed]
问:
我正在解决问题 1A:Codeforces 上的剧院广场(https://codeforces.com/problemset/problem/1/A)。
首都伯兰的剧院广场呈矩形,大小为×米。在城市周年纪念日之际,决定用方形花岗岩石板铺设广场。每块石板的大小为× a。
铺设广场所需的最少石板数量是多少?它被允许覆盖比剧院广场更大的表面,但广场必须被覆盖。不允许打破石板。石板的侧面应与广场的侧面平行。
输入: 输入在第一行包含三个正整数:n、m 和 a(1 ≤ n、m、a ≤ 10^9)。
输出: 写下所需的石板数量。
以下代码不起作用,当我直接使用以下方式打印答案时:cout
#include <bits/stdc++.h>
using namespace std;
int main() {
long long n, m, a;
cin >> n >> m >> a;
cout << (ceil(double(n) / a) * ceil(double(m) / a)) << endl;
return 0;
}
但是当我存储答案然后打印它时有效:
#include <bits/stdc++.h>
using namespace std;
int main(){
long long n, m, a, number;
cin >> n >> m >> a;
number = (ceil(double(n) / a) * ceil(double(m) / a));
cout << number << endl;
return 0;
}
请帮助我理解为什么在第一种情况下,对于以下输入,它会给出错误的答案:
n = m = 10^9 ; a = 1
答:
3赞
Chris
7/16/2023
#1
如前所述,在第一种情况下,您使用的是 which 返回 a 并打印该类型的值。在第二种情况下,您将该值分配给整数类型的变量,然后打印该值。std::ceil
double
double
long long
long long
不应期望两者打印相同。
评论
double
long long
ceil()
pow()
double