競合プログラミングジャッジで使用するために、cin
より速くstdin
から入力を読み取るために、この関数をC++で作成しました。整数を取得するためにstdinを高速スキャンする
inline int VReadNumber() {
int n = 0;
int ch = getchar_unlocked();
while(ch >= '0' && ch <= '9') {
n = (n<<3) + (n<<1) + ch - '0';
ch = getchar_unlocked();
}
return n; }
すべての入力が
2
40 40
80
5
1 2 3 4 5
10
のように改行なしで与えられている。しかし、それは
2
40 40
80
5
1 2 3 4 5
10
のように入力して改行してうまくやっていないとだけ読み込む場合、それは完璧に動作します改行までの値、ここではまで80までです。
この作業を改行するにはどうすればよいですか?また、使用例も高く評価されます。
scanf
などの代わりに、すべての「ニュアンス」でこれを使用する価値はありますか?
* ...改行ではうまくいかない* ...どういう意味ですか?何がうまくいかない? – lurker
今日のコンパイラでは、 'n * 10'を' n * 10' + '(n << 1)'に最適化しないと思うでしょうか? – dasblinkenlight
これは、改行の後に番号を読むのではなく、ゼロを返します。 – Virus