0 #A1001. A+B Problem(NOI系列比赛必做题)
A+B Problem(NOI系列比赛必做题)
背景说明
NOI相关赛事:CSP NOIP等竞赛时候,要求必须以文件读写的方式,进行数据的输入输出操作
注意:本题和CSP NOIP考试一样,必须以文件读写的方式,进行测试
题目描述
已知两个整数 x,y,计算它们的和。.
格式要求
C++代码保存名为:myfile.cpp
CSP考试时候,代码保存到考试要求的文件夹(一般是准考证号为名字的文件夹内,文件名一定要和试卷要求的同名,包括大小写,文件扩展名cpp等;
输入
从文件 **myfile.in**
中读入数据。
输入文件名的字母,一定要和试卷要求的一模一样,包括大小写,文件扩展名等;
一行两个整数 以空格隔开x y。 .
输出
输出到文件 **myfile.out**
中。
输出文件名的字母,一定要和试卷要求的一模一样,包括大小写,文件扩展名等;
一个整数 x+y的值。
样例数据
123 500
623
限制要求
时间要求:<=1000ms;
(大约循环次数在以内,为安全时间)
空间要求:<=256M
(以int数据类型为例: ,
一维数组最大定义到 int array[N]
二维数组最大定义到 int array[a][b];其中a*b<=N;)
通用模板A(输入输出数据量小于10000的时候适用):
#include <bits/stdc++.h>//采用万能头文件
using namespace std;
int a,b; //一般情况可将变量定义成全局变量,这样定义时候都自动初始化为0,但要注意全局变量改变后对全局的影响;
int array[1000005];//数组基本上都定义在全局变量区域,因为定义在主函数中数组太大时候容易爆;
int main(){
freopen("myfile.in","r",stdin);//以文件形式读取数据,注意文件名按照试卷要求
freopen("myfile.out","w",stdout);//输出结果到myfile.out文件内,注意文件名按照试卷要求
//代码正文部分
cin>>a>>b;
cout<<a+b;
return 0;//这行一定要有
}
★快读模版代码B:(输入输出数据量比较大的时候推荐使用这种方式)
#include <bits/stdc++.h>//采用万能头文件
#define endl "\n"//输出需要换行的话以"\n"代替endl,会加快输出速度
using namespace std;
int a,b; //一般情况可将变量定义成全局变量,这样定义时候都自动初始化为0,但要注意全局变量改变后对全局的影响;
int array[1000005];//数组基本上都定义在全局变量区域,因为定义在主函数中数组太大时候容易爆;
int main(){
freopen("myfile.in","r",stdin);//以文件形式读取数据,,注意文件名按照试卷要求
freopen("myfile.out","w",stdout);//输出结果到myfile.out文件内,,注意文件名按照试卷要求
//输入输出文件名的字母,一定要和试卷要求的一模一样(注意大小写也要一致);
//代码保存到考试要求的文件夹(一般是准考证号为名字的文件夹内,文件名一定要和试卷要求的同名
//关闭cin,cout和scanf,printf 的同步,关闭后可以加快输入输出速度,但是后者就不允许混用了
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);//通过tie(0)(0表示NULL)来解除cin与cout的绑定,进一步加快执行效率
//程序代码正文部分:
cin>>a>>b;
cout<<a+b<<endl;
return 0;//这行必须有,否则可能爆零分;
}
快读模版代码C:(老一代OIer用这种方式,呵呵......)
#include <bits/stdc++.h>//采用万能头文件
using namespace std;
int a,b; //一般情况可将变量定义成全局变量,这样定义时候都自动初始化为0,但要注意全局变量改变后对全局的影响;
int array[1000005];//数组基本上都定义在全局变量区域,因为定义在主函数中数组太大时候容易爆;
int main(){
freopen("myfile.in","r",stdin);//以文件形式读取数据
freopen("myfile.out","w",stdout);//输出结果到myfile.out文件内。
//输入输出文件名的字母,一定要和试卷要求的一模一样;
//代码保存到考试要求的文件夹(一般是准考证号为名字的文件夹内,文件名一定要和试卷要求的同名
//代码正文部分
scanf("%d%d",&a,&b);
printf("%d",a+b);
return 0;//这行一定要有
}
快读模版代码D:(虽然快,但没必要)
手写快读相对比以上的输入方法要快速,但代码比较繁琐,现在的竞赛中越来越偏向于侧重考察思维能力和算法能力,对于这种卡输入输出的要求越来越少了,所以一般也不常用。
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
int a,b;
int array[1000005];
//手写快读函数
inline int read(){
register int x = 0, t = 1;
register char ch=getchar(); // 读入单个字符到寄存器
while(ch<'0'||ch>'9'){
if(ch=='-')
t=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48); // 移位与异或
// 第十行可以换成 x = x * 10 + ch - '0'
ch=getchar();
}
return x*t;
}
//手写快写函数
inline void write(int x)
{
if(x<0){
putchar('-');
x=-x;
}
if(x>9)
write(x/10);
putchar(x%10+'0');
}
int main(){
freopen("myfile.in","r",stdin);
freopen("myfile.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
//程序代码正文部分:
a=read();
b=read();//cin>>a>>b;
write(a+b);//cout<<a+b<<endl;
cout<<endl;
return 0;
}
模板选择说明
当输入输出数据不大时候(1000以内)采用模板A,简单方便,输入输出数据比较多(10000次以上)采用模板BCD之一。
模板B注意添加关闭同步语句(反正死记硬背记住模板就好了),然后就可以按照正常的C++输入输出cin cout来写代码,可以使用STL 的string等。这种输入方式是在IO之前将stdio解除绑定,但是这样做了之后要注意不要同时混用cout和printf之类。
模板C使用C语言的scanf和printf输入输出,该方法遇到字符输入的时候要注意格式问题,往往很容易出错,也不能使用string类等
模板D虽然速度是最快的,但是由于比较繁琐,目前的竞赛基本上很少去卡这个时间了,所以万一考试时候写错了某个部分,反而得不偿失了。
模板B和C根据个人喜好选择,但是cin cout scanf printf尽量不要混用。
最后的最后,不要管上面的那些罗里吧嗦的文字了,只要记住以下这段去掉注释后的固定模板B代码(把“myfile”改成试卷上题目要求的文件名,其他部分记住照搬就好了):
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
int a,b;
int array[1000005];
int main(){
freopen("myfile.in","r",stdin);
freopen("myfile.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
//程序代码正文部分:
cin>>a>>b;
cout<<a+b<<endl;
return 0;
}
相关
在下列比赛中: