今天做PAT看见一个特别炫酷的一栏,就做了一道题。。。。
A + B Problem
Time Limit: 2000 msMemory Limit: 65536 KB
Calculate a + b
Input
The input will consist of a series of(原谅我英文不好,没看到这个) pairs of integers a and b,separated by a space, one pair of integers per line.
Output
For each pair of input integers a and b you should output the sum of a and b in one line,and with one line of output for each line in input.
Sample Input
1 5
Sample Output
6
Hint
Use + operator
Sample Program Here
答案先放出来
#include<iostream>
using namespace std;
int main()
{
int a,b;
while(cin>>a>>b)
{printf("%d\n",a + b);
}
return 0;
}
我没看到 一系列输入所以以为是个大数计算,所以错了
特地整了个string类型的加法,当然瞎写的,暴力书写很烂还是没有过
#include<iostream>
using namespace std;
int main(){
string a,b;
int c=a.length()>b.length()? b.length():a.length();
int d=a.length()<b.length()? b.length():a.length();
int count=0;
string s;
for(int i=0;i<d;i++){
if(a.length()>i){
count+=a[a.length()-i-1]-'0';
}if(b.length()>i){
count+=b[b.length()-i-1]-'0';
}
char o=(count%10+'0');
s=o+s;
count=count/10;
if(count>0){
s+=(count%10+'0');
}
cout<<s<<endl;
}
return 0;
}
后来我看 别人答案 才意识到是有 a series of 就改成了,卡在while循环超时了
#include<iostream>
using namespace std;
int main()
{
int a,b;
while(scanf("%d %d",&a,&b))
{printf("%d\n",a + b);
}
return 0;
}
换成cin就可以了
#include<iostream>
using namespace std;
int main()
{
int a,b;
while(cin>>a>>b)
{printf("%d\n",a + b);
}
return 0;
}
后来又查了资料,scanf的返回值比较EOF就行了
scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。
因为浙大的oj是文件读入,那就判断EOF呗,
开始想的是读入错误应该是返回0,就跳出while了,但是仍然会卡在while
(其实自己不用文件读写的时候都没有跳出while循环....)
#include<iostream>
using namespace std;
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF)
{printf("%d\n",a + b);
}
return 0;
}