为什么会快
C++中getchar的速度是比scanf快很多的
fread其实是输入中最快的
只不过不会用
然后输出自然也是putchar更胜一筹
fwrite也是输出中最快
只不过也不会用
Code:
注释版:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
inline void read(int &f) {
//地址符,也就是说如果read(n),n的值会随着f的值变换而变换
f=0;int flag=1; char c=getchar();
//flag判断正负
while(!isdigit(c)) {if (c=='-') flag=-1; c=getchar();}
while(isdigit(c)) {f=(f<<3)+(f<<1)+c-48; c=getchar();}
//isdigit(c)用来判断(int)c是否在范围48~57之间,是则return 1 else return 0
f*=flag; return;
}
void write(int x) {
if(x>9) write(x/10);putchar(x%10+48);return;
}
void write_(int x) {
if(x<0)putchar('-'),x=-x;//判断负数
write(x); putchar(' '); return;
}
void writeln(int x) {
if(x<0)putchar('-'),x=-x;//判断负数
write(x); putchar('\n'); return;
}
int main() {
int x;read(x);
write_(x); writeln(x);
write_(x); write(x)
}
无注释版本
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
inline void read(int &f) {
f=0;int flag=1; char c=getchar();
while(!isdigit(c)) {if (c=='-') flag=-1; c=getchar();}
while(isdigit(c)) {f=(f<<3)+(f<<1)+c-48; c=getchar();}
f*=flag; return;
}
void write(int x) {
if(x>9) write(x/10);putchar(x%10+48);return;
}
void write_(int x) {
if(x<0)putchar('-'),x=-x;
write(x); putchar(' '); return;
}
void writeln(int x) {
if(x<0)putchar('-'),x=-x;
write(x); putchar('\n'); return;
}
int main() {
int x;read(x);
write_(x); writeln(x);
write_(x); write(x)
}