inline int read() { char ch; bool flag = false; int a = 0; while(!((((ch = getchar()) >= '0') && (ch <= '9')) || (ch == '-'))); if(ch != '-') { a *= 10; a += ch - '0'; } else { flag = true; } while(((ch = getchar()) >= '0') && (ch <= '9')) { a *= 10; a += ch - '0'; } if(flag) { a = -a; } return a; } void write(int a) { if(a < 0) { putchar('-'); a = -a; } if(a >= 10) { write(a / 10); } putchar(a % 10 + '0'); }
测试:
数据生成
#include <iostream> #include <cstdio> #include <windows.h> #include <cstdlib> #include <ctime> using namespace std; const int MAXN = 1000000; int main() { freopen("in.txt", "w", stdout); srand((unsigned)time(NULL)); for (int i = 1; i <= MAXN; i++) { printf("%d\n", rand()); } return 0; }
#include <iostream> #include <cstdio> #include <windows.h> #include <cstdlib> #include <ctime> using namespace std; #pragma warning(disable : 4996) const int MAXN = 1000000; inline int read() { char ch; bool flag = false; int a = 0; while(!((((ch = getchar()) >= '0') && (ch <= '9')) || (ch == '-'))); if(ch != '-') { a *= 10; a += ch - '0'; } else { flag = true; } while(((ch = getchar()) >= '0') && (ch <= '9')) { a *= 10; a += ch - '0'; } if(flag) { a = -a; } return a; } void write(int a) { if(a < 0) { putchar('-'); a = -a; } if(a >= 10) { write(a / 10); } putchar(a % 10 + '0'); } void test1() { int x; DWORD start_time, end_time; start_time = GetTickCount(); for (int i = 1; i <= MAXN; i++) { x = read(); //write(x); //putchar('\n'); } end_time = GetTickCount(); printf("%lf\n", (end_time - start_time) / 1000.0); } void test2() { int x; DWORD start_time, end_time; start_time = GetTickCount(); for (int i = 1; i <= MAXN; i++) { scanf("%d", &x); //printf("%d", x); //putchar('\n'); } end_time = GetTickCount(); printf("%lf\n", (end_time - start_time) / 1000.0); } int main() { freopen("in.txt", "r", stdin); test1(); test2(); return 0; }
单纯进行读入操作:
0.546000
2.340000
请按任意键继续. . .