一.使用情况
当题目需要大量读入数据时使用,可以节约一些时间。(比如要读入10000个数,但不是数据大小,只是数据多)
二.作用原理
一个个字符用getchar()方法读入,可以比cin节约少量时间。
三.实现函数
//内联函数,调用后无需删除地址,使下次调用更快
//适合像read这种需要多次调用的函数
inline long long read(){
char cc=getchar(); //读入一个字符
long long f=1,ans=0; //f控制符号,ans控制数
//判断是否为负数
while(cc<'0' ||cc>'9'){
if(cc=='-') f=-1;
cc=getchar(); //记得再次读入
}
//存数
while(cc>='0' &&cc<='9'){
ans=(ans*10)+(cc-'0'); //转字符串为数字
cc=getchar(); //记得再次读入
}
//return
return f*ans;
}
用位运算进行优化
?
//内联函数,调用后无需删除地址,使下次调用更快
//适合像read这种需要多次调用的函数
inline long long read(){
char cc=getchar(); //读入一个字符
long long f=1,ans=0; //f控制符号,ans控制数
//判断是否为负数
while(cc<'0' ||cc>'9'){
if(cc=='-') f=-1;
cc=getchar(); //记得再次读入
}
//存数
while(cc>='0' &&cc<='9'){
ans=(ans<<1)+(ans<<3)+(cc-'0'); //转字符串为数字
cc=getchar(); //记得再次读入
}
//return
return f*ans;
}
?
四.具体题目(A+B problem)
【题目】
题目描述:输入一个正整数n,表示有n个数,接下来再输入n个数。计算它们的和。
样例输入:
20
233 222 2334 123 654 2345 235 2345 321 357
123 45 65 346 76 456 778 -123 -20 -1000样例输出:
9915
【AC代码】
#include<bits/stdc++.h>
using namespace std;
inline long long read(){
char cc=getchar(); //读入一个字符
long long f=1,ans=0; //f控制符号,ans控制数
//判断是否为负数
while(cc<'0' ||cc>'9'){
if(cc=='-') f=-1;
cc=getchar(); //记得再次读入
}
//存数
while(cc>='0' &&cc<='9'){
ans=(ans<<1)+(ans<<3)+(cc-'0'); //转字符串为数字
cc=getchar(); //记得再次读入
}
//return
return f*ans;
}
int main(){
long long ans=0;
int n=read();
int a;
for(int i=0;i<n;i++){
a=read();
ans+=a;
}
cout<<ans<<endl;
return 0;
}