求助(60/100)

P4305 [JLOI2011] 不重复数字

我不太了解快读,您这个快读可以读负数吗?
by Avocadooo @ 2022-04-04 22:15:45


@[雨伞CKY](/user/415445)
by Avocadooo @ 2022-04-04 22:16:27


我都看不懂
by keep_a_low_profile @ 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


| 下一页