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 y0x,y327670\leq x,y\leq 32767 .

输出

输出到文件 **myfile.out** 中。

输出文件名的字母,一定要和试卷要求的一模一样,包括大小写,文件扩展名等;

一个整数 x+y的值。

样例数据

123 500
623

限制要求

时间要求:<=1000ms;

(大约循环次数在10710^7以内,为安全时间)

空间要求:<=256M

(以int数据类型为例: N=256×1024×1024/46×107N=256\times1024\times1024/4\approx6\times10^7,

一维数组最大定义到 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; 
}