[英]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 ++混合,所以关于如何改进输入流的任何想法都会非常有用。
谢谢
虽然我永远不会在SPOJ(尤其是金字塔群集)上给出全面的性能声明,但我注意到cin
和scanf
之间存在显着差异。
如果您认为I / O限制了您,我会使用scanf
。
并且不要因为它在C中可用而忽视某些东西(这将是相当多的事情!)
scanf()
和printf()
也可以在C ++中使用。 它不会将C与C ++ 混合在一起 。
只需包含<cstdio>
头文件即可。
当然, scanf()
和printf()
分别比cin
和cout
快很多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.