原题链接
https://ac.nowcoder.com/acm/contest/5657#question
或
https://www.nowcoder.com/test/27976983/summary
1.计算a + b a+ba+b,任意组数据任意结尾
链接:https://ac.nowcoder.com/acm/contest/5657/A
来源:牛客网
输入样例:
1 5 10 20
输出样例:
6 30
代码:
#include<iostream> using namespace std; int a,b; int main(){ while(cin>>a>>b){ cout<<a+b<<endl; } }
说明:while(cin>>a>>b)
可以反复输入,直到没有读取到输入结束
2.计算a + b a+ba+b,指定组数据
链接:https://ac.nowcoder.com/acm/contest/5657/B
来源:牛客网
输入样例:
2 1 5 10 20
输出样例:
6 30
代码:
#include<iostream> using namespace std; int t; int main(){ cin>>t; while(t--){ int a,b; cin>>a>>b; cout<<a+b<<endl; } }
3.计算a + b a+ba+b,任意组数据以0 0结尾
链接:https://ac.nowcoder.com/acm/contest/5657/C
来源:牛客网
输入样例:
1 5 10 20 0 0
输出样例:
6 30
代码:
#include<iostream> using namespace std; int a,b; int main(){ while(cin>>a>>b&&a&&b){ cout<<a+b<<endl; } }
说明:while(cin>>a>>b&&a&&b)
在读取完a b abab数值后检测a b abab是否为0,同时为0则跳出循环
4.计算行数据和,每行数据总数已知,总行数未知但以0结尾
链接:https://ac.nowcoder.com/acm/contest/5657/D
来源:牛客网
题目描述 :
计算一系列数的和
输出描述:
每组数据输出求和的结果
输入样例:
4 1 2 3 4 5 1 2 3 4 5 0
输出样例:
10 15
代码:
#include<iostream> #include<string> #include<cstring> #include<sstream> using namespace std; int t; int main(){ while(cin>>t&&t){ int sum=0; int num=0; for(int i=0;i<t;i++){ cin>>num; sum+=num; } cout<<sum<<endl; } return 0; }
说明:while(cin>>t&&t)
判断当前读取数据是否为0,为0则跳出循环
5.计算行数据和,每行数据总数已知,总行数已知
链接:https://ac.nowcoder.com/acm/contest/5657/E
来源:牛客网
题目描述:
计算一系列数的和
输出描述:
每组数据输出求和的结果
输入样例:
2 4 1 2 3 4 5 1 2 3 4 5
输出样例:
10 15
代码:
#include<iostream> using namespace std; int main(){ int t; cin>>t; while(t--){ int n,num=0,sum=0; cin>>n; for(int i=0;i<n;i++){ cin>>num; sum+=num; } cout<<sum<<endl; } }
6.计算行数据和,每行数据总数已知,总行数未知且任意结尾
链接:https://ac.nowcoder.com/acm/contest/5657/F
来源:牛客网
题目描述:
计算一系列数的和
输出描述:
每组数据输出求和的结果
输入样例:
4 1 2 3 4 5 1 2 3 4 5
输出样例:
10 15
代码:
#include<iostream> #include<string> #include<cstring> #include<sstream> using namespace std; int t; int main(){ while(cin>>t){ int sum=0; int num=0; for(int i=0;i<t;i++){ cin>>num; sum+=num; } cout<<sum<<endl; } return 0; }
说明:同样的,用while(cin>>t)
读取数据
7.计算行数据和,每行数据总数未知,总行数未知且任意结尾
链接:https://ac.nowcoder.com/acm/contest/5657/G
来源:牛客网
题目描述:
计算一系列数的和
输出描述:
每组数据输出求和的结果
输入样例:
1 2 3 4 5 0 0 0 0 0
输出样例:
6 9 0
代码:
#include<sstream> #include<iostream> #include<string> #include<cstring> using namespace std; string s; int main(){ while(getline(cin,s)){ stringstream sstream(s); int sum=0,num=0; while(sstream>>num) sum+=num; cout<<sum<<endl; } }
说明:stringstream
类可以把字符串转化为输入流,然后从输入流中读取数据。getline(cin,s)
可以一次性读取自带空格的一行数据。sstream>>num
和cin>>num
类似,但是是从刚才转化出的字符串流而不是键盘/文件中读取数据。
8.字符串排序,已知字符串数量
链接:https://ac.nowcoder.com/acm/contest/5657/H
来源:牛客网
题目描述:
对输入的字符串进行排序后输出
输入描述:
输入有两行,第一行n
第二行是n个字符串,字符串之间用空格隔开
输出描述:
输出一行排序后的字符串,空格隔开,无结尾空格
输入样例:
5 c d a bb e
输出样例:
a bb c d e
代码:
#include<iostream> #include<vector> #include<algorithm> using namespace std; vector<string> vs; int main(){ string s; int n; cin>>n; for(int i=0;i<n;i++){ cin>>s; vs.push_back(s); } sort(vs.begin(),vs.end()); for(int i=0;i<n-1;i++) cout<<vs[i]<<" "; cout<<vs[n-1]; }
说明:用vector
暂存输入的字符串
9.字符串排序,未知字符串数量,多组数据
链接:https://ac.nowcoder.com/acm/contest/5657/I
来源:牛客网
题目描述
对输入的字符串进行排序后输出
输入描述:
多个测试用例,每个测试用例一行。
每行通过空格隔开,有n个字符,n<100
输出描述:
对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开
输入样例:
a c bb f dddd nowcoder
输出样例:
a bb c dddd f nowcoder
代码:
#include<iostream> #include<vector> #include<sstream> #include<cstring> #include<string> #include<algorithm> using namespace std; string s; vector<string> vs; int main(){ while(getline(cin,s)){ stringstream sstream(s); vs.clear(); string temps; while(sstream>>temps) vs.push_back(temps); sort(vs.begin(),vs.end()); for(auto str:vs) cout<<str<<" "; cout<<endl; } }
说明:同样的,用getline(cin,s)
读取自带空格的数据,用stringstream
创建字符串流。
10.字符串排序,未知字符串数量,每个字符串以逗号分隔
链接:https://ac.nowcoder.com/acm/contest/5657/J
来源:牛客网
题目描述:
对输入的字符串进行排序后输出
输入描述:
多个测试用例,每个测试用例一行。
每行通过,
隔开,有n个字符,n<100
输出描述:
对于每组用例输出一行排序后的字符串,用’,'隔开,无结尾空格
输入样例:
a,c,bb f,dddd nowcoder
输出样例:
a,bb,c dddd,f nowcoder
代码(个人版)不是最优解
#include<iostream> #include<cstring> #include<string> #include<vector> #include<algorithm> using namespace std; vector<string> vs; int main(){ string lines; while(getline(cin,lines)){ vs.clear(); while(lines.find(',')!=string::npos){ vs.push_back(lines.substr(0,lines.find(','))); lines=lines.substr(lines.find(',')+1); } vs.push_back(lines); sort(vs.begin(),vs.end()); int n=vs.size(); cout<<vs[0]; for(int i=1;i<n;i++) cout<<","<<vs[i]; cout<<endl; } }
说明:反复调用find()和substr不断找逗号,不断把字符串截短。输出时先输出第0项,之后输出逗号和当前项,防止出现行末空格和多余逗号。
代码(牛客网上最优解)
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=52627787
#include <bits/stdc++.h> using namespace std; int main(){ string s; while(getline(cin, s)){ stringstream ss(s); vector<string> v; while(getline(ss, s, ',')) v.push_back(s); sort(v.begin(), v.end()); for(int i=0;i<v.size()-1;++i) cout<<v[i]<<','; cout<<v.back()<<endl; } return 0; }
说明:getline(ss,s,ch)
可以从字符串流ss
中将字符串读入s
,这个字符串默认以\n
结尾,但可以通过参数指定为以ch
结尾。
11.计算a + b a+ba+b,但有坑
链接:https://ac.nowcoder.com/acm/contest/5657/K
来源:牛客网
数据范围:0<a,b<2×1010
输入描述:
输入有多组测试用例,每组空格隔开两个整数
输出描述:
对于每组数据输出一行两个整数的和
输入样例
1 1
输出样例
2
代码:
#include<iostream> using namespace std; int main(){ long long a,b; while(cin>>a>>b) cout<<a+b<<endl; }
说明:十年OI一场空,不开long long
见祖宗。