昨天在OJ上看到一個很水的題,題意就是兩個遞增序列,輸出合併後新序列的中值。當時也閒來無事,於是決定動手寫寫。剛開始也沒怎麼在意,認爲該題隨便都能AC。可提交的結果卻TLE了,當時就鬱悶了,這算法不可能會有問題啊,不就是一個簡單的歸併而已,我寫的再搓也不可能會TLE啊(小小地自戀一下,哈哈)。我堅信算法肯定是沒問題的,那問題究竟出在哪兒了呢?很快便鎖定問題的癥結在於輸入輸出,其實剛開始並不確定,雖然很早以前就知道cin,cout比scanf,printf要慢,可一直沒在意,認爲即使有差別也不會太大吧,但這次“血淋淋”的事實就是cin,cout就TLC,scanf,printf就AC了。於是,一個問題“cin,cout與scanf,printf速度上的差別到底有多大”便出現在腦海中。晚上跑步的時候,將該問題告訴了霏哥,霏哥測試了cin與scanf,但結果卻大大出乎了我們的預料,cin竟然比scanf快!怎麼回事?這不可能啊,難道霏哥的方法不對,這也不大可能啊(我可是絕對相信霏哥的哦,哈哈)。
帶着諸多疑問,我決定自己親自測測。於是編寫了如下代碼:
(1)隨機生成1000000個數,並將它們寫到文件data中
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
const int NUM = 1000000;
int main()
{
ofstream file("data");
for(int i = 0 ; i < NUM ; i++)
{
file<<rand()<<' ';
if((i+1)%20 == 0)
file<<endl;
}
return 0;
}
(2)測試cin讀取這1000000個數所用的時間
#include <iostream>
#include <ctime>
#include <cstdio>
using namespace std;
const int NUM = 1000000;
int main()
{
帶着諸多疑問,我決定自己親自測測。於是編寫了如下代碼:
(1)隨機生成1000000個數,並將它們寫到文件data中
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
const int NUM = 1000000;
int main()
{
ofstream file("data");
for(int i = 0 ; i < NUM ; i++)
{
file<<rand()<<' ';
if((i+1)%20 == 0)
file<<endl;
}
return 0;
}
(2)測試cin讀取這1000000個數所用的時間
#include <iostream>
#include <ctime>
#include <cstdio>
using namespace std;
const int NUM = 1000000;
int main()
{