我不太了解快读,您这个快读可以读负数吗?
by Avocadooo @ 2022-04-04 22:15:45
@[雨伞CKY](/user/415445)
by Avocadooo @ 2022-04-04 22:16:27
我都看不懂
by qiuweilin666 @ 2022-04-04 22:17:04
@[乔木生夏凉](/user/432127) 感谢!似乎是我疏忽了负数。
```cpp
#include <cctype>
#include <cstdio>
#include <unordered_map>
using namespace std;
int read(){
int k = 1,tmp = 0;
char ch = getchar();
while (!isdigit(ch)){
if (ch == '-') k = -1;
ch = getchar();
}
while (isdigit(ch)){
tmp = (tmp << 3) + (tmp << 1) + (ch ^ '0');
ch = getchar();
}
return k * tmp;
}
void write(int x){
if (x < 0){
putchar('-');
x = -x;
}
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
int T,n,tmp;
unordered_map<int,bool> mp;
int main(){
T = read();
for (int i = 1;i <= T;i++){
mp.clear();
n = read();
for (int j = 1;j <= n;j++){
tmp = read();
if (!mp[tmp]){
mp[tmp] = true;
write(tmp);
putchar(' ');
}
}
putchar('\n');
}
return 0;
}
```
但是改完之后又出现了新问题。那四个测试点都完全一致地提示:
>Wrong Answer.wrong answer On line 1 column 301, read 8, expected 2.
by 雨伞CKY @ 2022-04-04 22:20:20
@[雨伞CKY](/user/415445) 你快读没判负数啊
by Miraik @ 2022-04-04 22:21:40
@[SweetOrangeOvO](/user/236862) 改了,还是不行。
by 雨伞CKY @ 2022-04-04 22:22:12
@[雨伞CKY](/user/415445)
为了避免出错还是建议您使用 ```scanf``` 和 ```printf``` ,在没有必要的情况下最好不用快读以尽可能避免带来不必要的麻烦。
我试了下改成 ```scanf``` 和 ```printf``` 就过了
by Avocadooo @ 2022-04-04 22:23:42
@[乔木生夏凉](/user/432127) **衷心感谢!**
似乎不是第一次这样了,但是我还是不清楚具体原因。
by 雨伞CKY @ 2022-04-04 22:26:25
@[雨伞CKY](/user/415445)
int 范围是 $-2^{31}$ 到 $2^{31}-1$
你的快输中 $x=-x$ 的操作在 $x=-2^{31}$ 时爆炸了。
by Miraik @ 2022-04-04 22:32:13
@[乔木生夏凉](/user/432127)
并不是,极少极少出现这种情况,本题正好卡掉快输而已,从来没有听说快读被卡出问题的。
by Miraik @ 2022-04-04 22:34:40