rt,我突发奇想,想试一试快读快写的极限是什么。
然后我改了改别的大佬的快读快写,让AI写了readInt,readLong,readDouble.
record (a+b) https://www.luogu.com.cn/record/160748393
但貌似有点问题,总之快就行了((
#include <cstdio>
#include <cstring>
#include <string>
namespace FastIO {
const int BUF_SIZE = 1 << 20; // 1MB
char input_buf[BUF_SIZE];
int input_pos = 0, input_len = 0;
char output_buf[BUF_SIZE];
int output_pos = 0;
inline int readInt() {
while (input_pos == input_len) {
input_len = fread(input_buf, 1, BUF_SIZE, stdin);
input_pos = 0;
}
while (input_buf[input_pos] < '0' || input_buf[input_pos] > '9') {
if (++input_pos == input_len) {
input_len = fread(input_buf, 1, BUF_SIZE, stdin);
input_pos = 0;
}
}
int x = 0;
while (input_buf[input_pos] >= '0' && input_buf[input_pos] <= '9') {
x = x * 10 + (input_buf[input_pos] - '0');
if (++input_pos == input_len) {
input_len = fread(input_buf, 1, BUF_SIZE, stdin);
input_pos = 0;
}
}
return x;
}
inline void writeInt(int x) {
if (x == 0) {
output_buf[output_pos++] = '0';
if (output_pos == BUF_SIZE) {
fwrite(output_buf, 1, BUF_SIZE, stdout);
output_pos = 0;
}
return;
}
char buf[10];
int i = 0;
if (x < 0) {
output_buf[output_pos++] = '-';
if (output_pos == BUF_SIZE) {
fwrite(output_buf, 1, BUF_SIZE, stdout);
output_pos = 0;
}
x = -x;
}
while (x > 0) {
buf[i++] = (x % 10) + '0';
x /= 10;
}
while (i--) {
output_buf[output_pos++] = buf[i];
if (output_pos == BUF_SIZE) {
fwrite(output_buf, 1, BUF_SIZE, stdout);
output_pos = 0;
}
}
}
inline void writeLongLong(long long x) {
if (x == 0) {
output_buf[output_pos++] = '0';
if (output_pos == BUF_SIZE) {
fwrite(output_buf, 1, BUF_SIZE, stdout);
output_pos = 0;
}
return;
}
char buf[20];
int i = 0;
if (x < 0) {
output_buf[output_pos++] = '-';
if (output_pos == BUF_SIZE) {
fwrite(output_buf, 1, BUF_SIZE, stdout);
output_pos = 0;
}
x = -x;
}
while (x > 0) {
buf[i++] = (x % 10) + '0';
x /= 10;
}
while (i--) {
output_buf[output_pos++] = buf[i];
if (output_pos == BUF_SIZE) {
fwrite(output_buf, 1, BUF_SIZE, stdout);
output_pos = 0;
}
}
}
inline void writeDouble(double x) {
char buf[32];
sprintf(buf, "%.6f", x);
for (char* p = buf; *p; ++p) {
output_buf[output_pos++] = *p;
if (output_pos == BUF_SIZE) {
fwrite(output_buf, 1, BUF_SIZE, stdout);
output_pos = 0;
}
}
}
inline void writeString(const std::string& s) {
for (char c : s) {
output_buf[output_pos++] = c;
if (output_pos == BUF_SIZE) {
fwrite(output_buf, 1, BUF_SIZE, stdout);
output_pos = 0;
}
}
}
void flushOutput() {
fwrite(output_buf, 1, output_pos, stdout);
}
class FastOutput {
public:
FastOutput& operator<<(int x) {
writeInt(x);
return *this;
}
FastOutput& operator<<(long long x) {
writeLongLong(x);
return *this;
}
FastOutput& operator<<(double x) {
writeDouble(x);
return *this;
}
FastOutput& operator<<(const std::string& s) {
writeString(s);
return *this;
}
FastOutput& operator<<(const char* s) {
while (*s) {
output_buf[output_pos++] = *s++;
if (output_pos == BUF_SIZE) {
fwrite(output_buf, 1, BUF_SIZE, stdout);
output_pos = 0;
}
}
return *this;
}
FastOutput& operator<<(char c) {
output_buf[output_pos++] = c;
if (output_pos == BUF_SIZE) {
fwrite(output_buf, 1, BUF_SIZE, stdout);
output_pos = 0;
}
return *this;
}
~FastOutput() {
flushOutput();
}
};
FastOutput fout;
}
int main() {
using namespace FastIO;
int a,b;
a=readInt();
b=readInt();
fout << a + b;
return 0;
}
有没有更快的方法读和写?这个压了3ms,不要用到做题中,这个东西就是用来玩的
太闲了想出来的,违规请回复
@suystar_bg wyy,zs