1. 读入优化
-
C++中有一个函数:getchar() ,用于读入字符,那么这跟读入整数有什么关系呢?
-
其实,经过类似高精度的处理,就可以实现类型转换啦!
模板:
#include<cctype>
inline int read()
{
int X=0,w=0;
char ch=0;
while(!isdigit(ch))
{
w|=ch=='-';
ch=getchar();
}
while(isdigit(ch))
X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
return w?-X:X;
}
-
isdigit(x) 表示 x 是否是 0 ~ 9 的整数 ,是则返回 true ,不是则是 false
-
注意要用 cctype
-
头文件。
-
像这样“XXX=read()”使用函数即可,效率超高
正负实数的读入优化模板:
inline double dbread()
{
double X=0,Y=1.0;
int w=0;
char ch=0;
while(!isdigit(ch))
{
w|=ch=='-';
ch=getchar();
}
while(isdigit(ch))
X=X*10+(ch^48),ch=getchar();
ch=getchar();//读入小数点
while(isdigit(ch))
X+=(Y/=10)*(ch^48),ch=getchar();
return w?-X:X;
}
2. 输出优化
-
在个别繁杂题目中,也可以使用输出优化!
-
与读入优化类似,使用用来输出字符的“putchar()”函数,也可到目的
正负数输出优化模板:
inline void write(int x)
{
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
注意
- 切记在使用时,应注意数据类型大小和正负!