原题链接

https://ac.nowcoder.com/acm/contest/5657#question

https://www.nowcoder.com/test/27976983/summary

1.计算 a + b a+b a+b,任意组数据任意结尾

链接:https://ac.nowcoder.com/acm/contest/5657/A
来源:牛客网

数据范围: 数据组数 1 ≤ t ≤ 100 1\le t\le 100 1t100 , 数据大小满足 1 ≤ n ≤ 1000 1 \le n\le 1000 1n1000
输入包括两个正整数 a , b ( 1 ≤ a , b ≤ 1000 ) a,b(1\le a, b \le 1000) a,b(1a,b1000),输入数据包括多组。

输出描述:
输出 a + b a+b a+b的结果

输入样例:

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+b a+b,指定组数据

链接:https://ac.nowcoder.com/acm/contest/5657/B
来源:牛客网

数据范围:数据组数满足 1 ≤ t ≤ 100 1 \le t \le 100 1t100 ,数据大小满足 1 ≤ a , b ≤ 1000 1 \le a,b \le 1000 1a,b1000

输入描述:
输入第一行包括一个数据组数 t ( 1 ≤ t ≤ 100 ) t(1 \le t \le100) t(1t100)
接下来每行包括两个正整数 a , b ( 1 ≤ a , b ≤ 1000 ) a,b(1 \le a, b \le 1000) a,b(1a,b1000)

输出描述:
输出 a + b a+b a+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+b a+b,任意组数据以0 0结尾

链接:https://ac.nowcoder.com/acm/contest/5657/C
来源:牛客网

数据范围:数据组数满足 1 ≤ t ≤ 100 1 \le t \le 100 1t100, 数据大小满足 1 ≤ n ≤ 100 1 \le n \le 100 1n100

输入描述:
输入包括两个正整数 a , b ( 1 ≤ a , b ≤ 1 0 9 ) a,b(1 \le a, b \le 10^9) a,b(1a,b109),输入数据有多组, 如果输入为 00 0 0 00则结束输入

输出描述:
输出a+b的结果

输入样例:

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 ab ab数值后检测 a b ab ab是否为0,同时为0则跳出循环

4.计算行数据和,每行数据总数已知,总行数未知但以0结尾

链接:https://ac.nowcoder.com/acm/contest/5657/D
来源:牛客网

题目描述 :
计算一系列数的和

数据范围:数据组数满足 1 ≤ t ≤ 100 1 \le t \le 100 1t100,每组数据中整数个数满足 1 ≤ n ≤ 100 1 \le n \le 100 1n100,每组数据中的值满足 1 ≤ v a l ≤ 100 1 \le val \le 100 1val100

输入描述:
输入数据包括多组。
每组数据一行,每行的第一个整数为整数的个数 n ( 1 ≤ n ≤ 100 ) n(1 \le n \le 100) n(1n100), n n n 0 0 0的时候结束输入。
接下来 n n n个正整数,即需要求和的每个正整数。

输出描述:
每组数据输出求和的结果

输入样例:

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
来源:牛客网

题目描述:
计算一系列数的和

数据范围:数据组数满足 1 ≤ t ≤ 100 1 \le t \le 100 1t100,每组数据中的整数个数满足 1 ≤ n ≤ 100 1 \le n \le 100 1n100 ,每个数据大小满足 1 ≤ v a l ≤ 100 1 \le val \le 100 1val100

输入描述:
输入的第一行包括一个正整数 t ( 1 ≤ t ≤ 100 ) t(1 \le t \le 100) t(1t100), 表示数据组数。
接下来 t t t行, 每行一组数据。
每行的第一个整数为整数的个数 n ( 1 ≤ n ≤ 100 ) n(1 \le n \le 100) n(1n100)
接下来 n n n个正整数, 即需要求和的每个正整数。

输出描述:
每组数据输出求和的结果

输入样例:

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
来源:牛客网

题目描述:
计算一系列数的和

数据范围: 1 ≤ n ≤ 1000 1 \le n \le 1000 1n1000 , 所有数都满足 1 ≤ v a l ≤ 1000 1 \le val \le 1000 1val1000

输入描述:
输入数据有多组, 每行表示一组输入数据。
每行的第一个整数为整数的个数 n ( 1 ≤ n ≤ 100 ) n(1 \le n \le 100) n(1n100)
接下来 n n n个正整数, 即需要求和的每个正整数。

输出描述:
每组数据输出求和的结果

输入样例:

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
来源:牛客网

题目描述:
计算一系列数的和

输入描述:
输入数据有多组, 每行表示一组输入数据。
每行不定有 n n n个整数,空格隔开。 ( 1 ≤ n ≤ 100 ) (1 \le n \le 100) (1n100)

输出描述:
每组数据输出求和的结果

输入样例:

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>>numcin>>num类似,但是是从刚才转化出的字符串流而不是键盘/文件中读取数据。

8.字符串排序,已知字符串数量

链接:https://ac.nowcoder.com/acm/contest/5657/H
来源:牛客网

题目描述:
对输入的字符串进行排序后输出

输入描述:
输入有两行,第一行 n n n
第二行是 n 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<string>暂存输入的字符串

9.字符串排序,未知字符串数量,多组数据

链接:https://ac.nowcoder.com/acm/contest/5657/I
来源:牛客网

题目描述
对输入的字符串进行排序后输出

输入描述:
多个测试用例,每个测试用例一行。
每行通过空格隔开,有 n n n个字符, n < 100 n<100 n100

输出描述:
对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开

输入样例:

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 n个字符, n < 100 n<100 n100

输出描述:
对于每组用例输出一行排序后的字符串,用’,'隔开,无结尾空格

输入样例:

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+b a+b,但有坑

链接:https://ac.nowcoder.com/acm/contest/5657/K
来源:牛客网

数据范围: 0 < a , b < 2 × 1 0 10 0 < a,b < 2 \times 10^{10} 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见祖宗。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐