在输入量比较大的情况下容易出现输入输出所消耗的时间过多,导致被卡常超时。一般出现在压轴题。这种情况下可能需要使用快读快写。以下是各个语言的快读快写模板。
# C++
快读
// 读入一个int整数
int read() {
register int x = 0,f = 1;register char ch;
ch = getchar();
while(ch > '9' || ch < '0'){if(ch == '-') f = -f;ch = getchar();}
while(ch <= '9' && ch >= '0'){x = x * 10 + ch - 48;ch = getchar();}
return x * f;
}
快写
void write(int x){
if(x<0){putchar('-');x=-x;}//若x为负数,输出符号并取其绝对值
if(x>9){write(x/10);putchar(x%10+'0');}//输出绝对值(采用递归的做法,减少代码量)
else putchar(x+'0');
return;
}
当 时,比scanf,printf 快一倍左右
以下是P1000 A+B 一题的示例代码:
#include<bits/stdc++.h>
using namespace std;
int read() {
register int x = 0,f = 1;register char ch;
ch = getchar();
while(ch > '9' || ch < '0'){if(ch == '-') f = -f;ch = getchar();}
while(ch <= '9' && ch >= '0'){x = x * 10 + ch - 48;ch = getchar();}
return x * f;
}
void write(int x){
if(x<0){putchar('-');x=-x;}//若x为负数,输出符号并取其绝对值
if(x>9){write(x/10);putchar(x%10+'0');}//输出绝对值(采用递归的做法,减少代码量)
else putchar(x+'0');
return;
}
int main(){
int a = read();
int b = read();
write(a + b);
return 0;
}
# Java
快读:FastReader 类
快写:PrintWriter 类,其定义后使用和System.out 用法一样,但是你不需要从System这个类中输出.
以下是P1000 A+B 一题的示例代码
import java.io.*;
import java.util.StringTokenizer;
// 注意类名必须为Main
class Main {
public static void main(String[] args) {
FastReader sc = new FastReader();
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
int a = sc.nextInt();
int b = sc.nextInt();
out.println(a + b);
// 最后记得flush,不然会没有输出
out.flush();
}
}
// 下面是快读模板。需要使用时直接贴在下面就好了
class FastReader{
StringTokenizer st;
BufferedReader br;
public FastReader(){
br=new BufferedReader(new InputStreamReader(System.in));
}
String next(){
while (st==null||!st.hasMoreElements()){
try {
st=new StringTokenizer(br.readLine());
}catch (IOException e){
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
long nextLong() {
return Long.parseLong(next());
}
double nextDouble() {
return Double.parseDouble(next());
}
String nextLine() {
String str = "";
try {
str = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
}
# Python
速度大概快 .同时你还可以选择pypy3编译器(如果平台提供)来获得更快的速度。
以下是P1000 A+B 一题的示例代码
import sys
input=lambda:sys.stdin.readline()
write=lambda x:sys.stdout.write(str(x)+'\n')
a , b = list(map(int , input().split()))
write(a + b)
# Go
见Golang 快读介绍 (opens new window)
# JavaScript
暂无
← 大彻大悟之<取模操作> 暴力模拟 →