B3785 题解
问题 1
(a + b - 1) / b 在
这两种情况都恰好等于
但是,这一方法在分母小于
因此,任给出一组
思考题:上述方法在分子为负、分母为正时能否使用?
问题 2
题意简述:
std::cerr 每调用一次就会刷新一次缓冲区,而刷新缓冲区次数太多就会导致超时。
关注到目标代码中有一句
if (s.find("std::cerr") != std::string::npos) {
std::cerr << cur << '\n';
++ans;
}
其中 s.find(t) 返回的是 std::string::npos。因此,当输入的 std::cerr 作为子串时,就会执行大括号内的内容,否则不会执行。if 每执行一次,就会调用一次 std::cerr。要让程序超时,只需要让程序尽可能多地调用 std::cerr。
于是,只需要令所有输入字符串均为
Code
#include <iostream>
int main() {
using std::cin, std::cout;
int x;
std::cin >> x;
if (x == 1) std::cout << "9 5 8\n";
else {
cout << 222222 << '\n';
for (int i = 1; i <= 222222; ++i)
cout << "std::cerr\n";
}
}