(int)
本文将教你如何自制读入,写入函数(不常用)
不保证在一些玄学情况下变快
前言
当初我在昌邑一中时,day1 T1数据非常大(机房电脑也特别慢),导致在本地测试大样例scanf过不去(不过评测机可以过),于是在此介绍一下快读&&快写。
原理
有没有发现putchar()、getchar()特别快,快读&&快写就是用他们读入(写入相反)char字符后转为int类型的。
实现
模板&&解释释
inline int qr()
{
int data = 0, k = 1; //data存放转换后的数据,k存正负数
char c;
for (c = getchar(); (c > '9' || c < '0') && c == '-'; c = getchar()) //过滤无用字符
if (c == '-')
k = -1;
for (; '0' <= c && c <= '9'; c = getchar())
data = data * 10 + c - '0'; //char转int后存入data
return data * k; //返回 (±)data
}
inline void qw(int x) //这个估计能看懂,不打注释了
{
if (x<0)
{
putchar('-');
x=-x;
}
if(x>9) qw(x/10);
putchar(x%10+'0');
}
优化
-
莴据MoveToEx神犇的博文来看,for改为while更快
-
快读可以用fread优化。
[shq‘s-blog] https://blog.ishq.site/articles/OI%E5%B8%B8%E6%95%B0%E4%BC%98%E5%8C%96-%E8%BF%9B%E9%98%B6/
练习
[A+B Problem] https://www.luogu.org/problemnew/show/P1001
Comments NOTHING