標籤:android style blog class code ext
本題就是測試讀入資料的速度的。
如果有大量的資料讀入,使用cin是很慢的。
那麼使用scanf那麼會快很多,但是如果資料量更大的話那麼就還是不夠快了。
所以這裡使用fread。
首先開一個buffer,然後使用fread大塊大塊地讀入資料就可以非常快地讀入了。
題目如下:
Input
The input begins with two positive integers n k (n, k<=107). The next n lines of input contain one positive integer ti, not greater than 109, each.
Output
Write a single integer to output, denoting how many integers ti are divisible by k.
Example
Input:7 31519663697999999611Output:4
原題地址:
http://www.codechef.com/problems/INTEST/
#include <stdio.h>namespace{#define SIZE 65536}int EnormousInputTest(){char buffer[SIZE];unsigned n, k, c;scanf("%u%u\n", &n, &k);unsigned ans = 0;int num = 0;while ((c = fread(buffer, 1, SIZE, stdin)) > 0){for (unsigned i = 0; i < c; i++){if (buffer[i] == ‘\n‘){if (num % k == 0) ans++;num = 0;}else{num = num * 10 + buffer[i] - ‘0‘;}}}printf("%u", ans);return 0;}
測試過這個函數實在是太快了。