一.快读/快写
众所周知,C++是高级语言,他的输入方式为cin>>variable,输出方式为cout<<variable
比C++年龄更大的的C语言,他是汇编语言,运行更快。如果拿他的scanf,printf和cin>>,cout<<比,数值大于20w,速度明显C语言的更快。
开发者觉得不够刺激,于是有了比scanf,printf更快地getchar,putchar,fgets,puts,只不过他们只针对字符的使用。
那有没有和getchar,putchar,fgets,puts一样快的输入、输出方式呢?可以针对int类型的吗?
当然有,这就是快读、快写。
所有头文件都不包含这两个函数,那么需要我们自己写函数。
快读模板:
int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
快写模板:
void write(int x){
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
return;
}
使用模板:
#include<iostream>
using namespace std;
int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
void write(int x){
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
return;
}
int main(){
int a=read();
write(a);
}
二.__int128的应用
这个数值可以存放大约long long 的1.3倍左右。想要操作他必须要用快读,快写模板。
例如:
#include<iostream>
using namespace std;
int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
void write(int x){
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
return;
}
int main(){
__int128 a=read();
write(a);
}
1000多字了,点个赞不过分吧?
8565

被折叠的 条评论
为什么被折叠?



