1. ホーム
  2. c++

[解決済み] C++高速CIN入力ストリーミング

2022-02-16 15:58:45

質問内容

次のようなSPOJの問題に挑戦しています。私はこの問題に対する解答を必要としていないことを明確にしたいので、この質問には「アルゴリズム」というタグを付けていません。

Multiply the given numbers. 

Input
n [the number of multiplications <= 1000]
l1 l2 [numbers to multiply (at most 10000 decimal digits each)]

Output
The results of multiplications.

Time Limit: 2 seconds.

私はO(n^2)というナイーブな解決法を持っています。これは学校で習った方法です(入力を文字列として読み、文字単位の乗算を行う)。Karatsubaメソッドでさらに最適化できることは知っています。

質問です。 私の現在のコードはC++です。インターネット上では scanf よりも高速です。 cin . 入力サイズが非常に大きいことを考えると、このような場合、大きな違いがあるのでしょうか?

CとC++を混在させたくはないので、入力ストリーミングを改善する方法について何かアイデアがあれば、とても助かります。

ありがとうございます。

解決方法は?

使用方法 sync_with_stdio :

cin.sync_with_stdio(false);

これにより、cstdioストリームとの同期がオフになり、速度が向上します。

デモ