社区讨论
Why TLE?
灌水区参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @m1kra81s
- 此快照首次捕获于
- 2024/09/27 21:25 去年
- 此快照最后确认于
- 2024/09/27 21:46 去年
这段代码会 TLE,但是把第 44 行
各位大佬,为什么啊?
CPPget() 里的的 while (n && order == "CHANGE") 改成 while (n) 就不会了。各位大佬,为什么啊?
#include <algorithm>
#include <iostream>
int n, k = 10;
long long number;
long long read(std::string other)
{
long long ten = 0;
for (char digit : other)
{
if (digit < 'A')
ten = ten * k + digit - 48;
else
ten = ten * k + digit - 55;
}
return ten;
}
std::string write(long long ten)
{
std::string other;
do
{
if (ten % k < 10)
other.push_back(ten % k + '0');
else
other.push_back(ten % k + '7');
} while (ten /= k);
std::reverse(other.begin(), other.end());
return other;
}
long long get(long long spare)
{
std::string order, right;
std::cin >> order;
--n;
while (n && order == "CHANGE")
{
std::cin >> k >> order;
--n;
}
if (order == "CLEAR")
{
number = 0;
return spare;
}
std::cin >> right;
return std::max(spare, read(right));
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cin >> n;
while (n--)
{
std::string order;
std::cin >> order;
if (order == "ADD")
{
long long right = get(0);
number += right;
}
else if (order == "SUB")
{
long long right = get(0);
number -= right;
}
else if (order == "MUL")
{
long long right = get(0);
number *= right;
}
else if (order == "DIV")
{
long long right = get(1);
number /= right;
}
else if (order == "MOD")
{
long long right = get(1);
number %= right;
}
else if (order == "NUM")
{
std::string in;
std::cin >> in;
number = read(in);
}
else if (order == "CHANGE")
std::cin >> k;
else if (order == "EQUAL")
std::cout << write(number) << '\n';
}
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...