1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <stdio.h> #define re register
//fread直接读入文件流到内存中,速度快 ,测试后耗时为getchar() 的 5分之一 左右 inline char nc() { static char buf[100000],*p1=buf,*p2=buf; //static 个人理解为只作用于设定地点的变量,每次返回时数组不变 //例如:退出函数时,数组存放了1,再次进入函数,数组依然存放着1,所以这句话也可以写成全局变量 return p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++; //fread(buf,1,100000,stdin) 读入100000次,长度为1,存入buf中,fread返回值为有效读取字符数 //p1=读入文件头,p2=读入文件尾,如果p1==p2,证明读完文件 //buf数组清空时才会继续读入 //可运用C++的调试查看具体过程 }
//类模板 //可随读入类型的不同,自动变化类型 //fread快读=正常的快读 把getchar改成自定义的读入 template <class T> inline void read(T &x) { x=0;char c=nc();bool p=false; for(; '0'>c || c>'9'; c=nc()) p|=c=='-'; for(; '0'<=c && c<='9'; c=nc()) x=(x<<1)+(x<<3)+(c^48); x=p?-x:x; }
int main() { freopen("a+b.in","r",stdin);//测试时请使用freopen,提交时可去除----Luogu等在线OJ int A,B; read(A),read(B); printf("%d",A+B); }
|