C ++快速cin输入流

时间:2013-10-28 07:18:55

标签: c++ scanf cin

我正在尝试以下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 ++混合使用,那么关于如何改进输入流的任何想法都会非常有用。

由于

3 个答案:

答案 0 :(得分:4)

使用sync_with_stdio

cin.sync_with_stdio(false);

这将关闭与cstdio流的同步,并将提高速度。

Demo

答案 1 :(得分:0)

虽然我永远不会在SPOJ(尤其是金字塔群集)上发表一致的表现声明,但我注意到cinscanf之间存在显着差异。

如果您认为I / O限制了您,我会使用scanf

并且不要因为它在C中可用而忽视某些东西(这将是很多事情!)

答案 2 :(得分:0)

scanf()printf()也可以在C ++中使用。它不会用C ++ 混合 C 只需添加<cstdio>标题文件。

当然,scanf()printf()分别比cincout快得多。