我正在尝试以下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 ++混合使用,那么关于如何改进输入流的任何想法都会非常有用。
由于
答案 0 :(得分:4)
答案 1 :(得分:0)
虽然我永远不会在SPOJ(尤其是金字塔群集)上发表一致的表现声明,但我注意到cin
和scanf
之间存在显着差异。
如果您认为I / O限制了您,我会使用scanf
。
并且不要因为它在C中可用而忽视某些东西(这将是很多事情!)
答案 2 :(得分:0)
scanf()
和printf()
也可以在C ++中使用。它不会用C ++ 混合 C
只需添加<cstdio>
标题文件。
当然,scanf()
和printf()
分别比cin
和cout
快得多。