繁体   English   中英

C ++快速cin输入流

[英]C++ fast cin input streaming

我正在尝试以下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流的同步,并将提高速度。

演示

虽然我永远不会在SPOJ(尤其是金字塔群集)上给出全面的性能声明,但我注意到cinscanf之间存在显着差异。

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

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

scanf()printf()也可以在C ++中使用。 它不会将C与C ++ 混合在一起
只需包含<cstdio>头文件即可。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM