https://www.nowcoder.com/exam/test/67432019/detail?pid=27976983#question

注意:只有部分个人觉得有意义的题目

  1. A+B(4)

计算一系列数的和

打开以下链接可以查看正确的代码

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

数据范围:数据组数满足 1≤�≤100 1≤t≤100 ,每组数据中整数个数满足 1≤�≤100 1≤n≤100 ,每组数据中的值满足 1≤���≤100 1≤val≤100

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 256M,其他语言512M

输入描述:

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

输出描述:

每组数据输出求和的结果

示例1

输入例子:

4 1 2 3 4
5 1 2 3 4 5
0

输出例子:

10
15

个人分析: 难点在于一行的个数是未知的,因此首先需要分行。

分行用到的函数或者结构有:getlinestringstream

#include <vector>
#include <unordered_set>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <unordered_map>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <sstream>
#include <numeric>
using namespace std; int main() {
ios::sync_with_stdio(false);
string line;
while (getline(cin,line)) {
stringstream ss;
ss << line;
long long res = 0;
int n = 0;
ss >> n;
if (n == 0) {
break;
}
else {
while (n--) {
int tmp; ss >> tmp;
res += tmp;
}
}
cout << res << endl;;
}
}
// 64 位输出请用 printf("%lld")

A+B(6)

计算一系列数的和

打开以下链接可以查看正确的代码

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

数据范围: 1≤�≤1000 1≤n≤1000 , 所有数都满足 1≤���≤1000 1≤val≤1000

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 256M,其他语言512M

输入描述:

输入数据有多组, 每行表示一组输入数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。

输出描述:

每组数据输出求和的结果

示例1

输入例子:

4 1 2 3 4
5 1 2 3 4 5

输出例子:

10
15

难点: 难点在于不知道有多少行。

解决:判断line是否为空即可。

getline函数会自己判断是否为空(和cin类似),因此直接将getline写在while中即可。

#include <vector>
#include <unordered_set>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <unordered_map>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <sstream>
#include <numeric>
using namespace std; int main() {
ios::sync_with_stdio(false);
string line;
while (getline(cin,line)) {
stringstream ss;
ss << line;
int n; ss >> n;
int res = 0;
while (n--) {
int t = 0; ss >> t;
res += t;
}
cout << res << endl;
}
}
// 64 位输出请用 printf("%lld")

字符串排序(1)

对输入的字符串进行排序后输出

打开以下链接可以查看正确的代码

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

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 256M,其他语言512M

输入描述:

输入有两行,第一行n

第二行是n个字符串,字符串之间用空格隔开

输出描述:

输出一行排序后的字符串,空格隔开,无结尾空格

示例1

输入例子:

5
c d a bb e

输出例子:

a bb c d e

难点:

  1. c++自带的string compare函数的比较规则
  2. 如何自定义比较规则。

解答:

  1. c++自带的string compare函数的比较规则

compare()比较时逐字符比较的,一旦能比较出结果,就不再比较了。 例如“abc”和“adf”,首先a和a比较,比不出结果;则b和d比较,结果就是“abc”小于“adf”,返回-1,即字典里“abc”在“adf”前面。例如“abc”和“abcd”比较,若“abc”都比完了,“abcd”还没完,说明“abc”小,返回值为-1,字典里“abc”靠前。总之记住这个比较规则和字典顺序一致即可。

  1. 自定义比较规则

见代码

使用的是lamda表达式

sort(vt.begin(), vt.end(), [](string a, string b)->bool {
int i = 0; int j = 0;
while (a[i] == b[j]) {
i++; j++;
if (i == a.size()) { return true; }
if (j == b.size()) { return false; }
}
return a[i] < b[j];
});

本题运行代码:

#include <vector>
#include <unordered_set>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <unordered_map>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <sstream>
#include <numeric>
using namespace std; int main() {
ios::sync_with_stdio(false);
int n; cin >> n;
vector<string> vt;
while (n--) {
string tmp; cin >> tmp;
vt.emplace_back(tmp);
}
sort(vt.begin(), vt.end(), [](string a, string b)->bool {
return a.compare(b) < 0;
});
for (auto item : vt) {
cout << item << " ";
}
}
// 64 位输出请用 printf("%lld")

9.字符串排序(2)

#include <vector>
#include <unordered_set>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <unordered_map>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <sstream>
#include <numeric>
using namespace std; int main() {
ios::sync_with_stdio(false);
string line;
while (getline(cin, line)) {
stringstream ss;
ss << line;
string tmp;
vector<string> vt;
while (ss >> tmp) {
vt.emplace_back(tmp);
}
sort(vt.begin(), vt.end(), [](string a, string b)->bool {
return a.compare(b) < 0;
});
for (auto& item : vt) {
cout << item << " ";
}cout << endl;
}
}
// 64 位输出请用 printf("%lld")

字符串排序(3)

对输入的字符串进行排序后输出

打开以下链接可以查看正确的代码

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

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 256M,其他语言512M

输入描述:

多个测试用例,每个测试用例一行。
每行通过,隔开,有n个字符,n<100

输出描述:

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

示例1

输入例子:

a,c,bb
f,dddd
nowcoder

输出例子:

a,bb,c
dddd,f
nowcoder

难点:分割符不是常使用的 空格 、tab等如何操作

getline函数可以指定分隔符,默认是以\n为分割符的。

#include <vector>
#include <unordered_set>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <unordered_map>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <sstream>
#include <numeric>
using namespace std; int main() {
ios::sync_with_stdio(false);
string line;
while (getline(cin, line)) { stringstream ss;
ss << line;
vector<string> vt;
string tmp;
while (getline(ss, tmp, ',')) {
vt.emplace_back(tmp);
}
sort(vt.begin(), vt.end(), [](string a, string b) ->bool {
return a.compare(b) < 0;
});
string show;
for (auto& item : vt) {
show.append(item); show.push_back(',');
}show.pop_back();
cout <<show<< endl;
}
}
// 64 位输出请用 printf("%lld")

11.自测本地通过提交为0

#include <vector>
#include <unordered_set>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <unordered_map>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <sstream>
#include <numeric>
using namespace std; int main() {
ios::sync_with_stdio(false);
long long a, b;
while (cin >> a >> b) {
cout << a + b << endl;
}
}
// 64 位输出请用 printf("%lld")

牛客 acm输入输出模式练习的更多相关文章

  1. 牛客ACM赛 B [小a的旅行计划 ]

    链接 B 小a的旅行计划 把\(n\)个数中选任意数分成\(a,b\)两个集合,集合无区别,要求不包含且有交,求方案数.\(n\leq 10^{13}\) 首先讨论\(a,b\)并集是否为全集: 若是 ...

  2. 牛客ACM赛 C 区区区间间间

    链接 C 区区区间间间 给定长度为\(n\)序列,求\[\sum_{i=1}^{n} \sum_{j=i}^{n} max-min\] 其中\(max\),\(min\)为区间最大,最小值,\(n\l ...

  3. 8.30 牛客OI赛制测试赛1 F题 子序列

    题目描述 给出一个长度为n的序列,你需要计算出所有长度为k的子序列中,除最大最小数之外所有数的乘积相乘的结果 输入描述: 第一行一个整数T,表示数据组数.对于每组数据,第一行两个整数N,k,含义如题所 ...

  4. 平衡二叉树 (牛客国庆day2)解锁二叉树打表姿势&&找规律套路

    链接:https://www.nowcoder.com/acm/contest/202/F来源:牛客网 平衡二叉树,顾名思义就是一棵“平衡”的二叉树.在这道题中,“平衡”的定义为,对于树中任意一个节点 ...

  5. 算法题 21 findNSum (好未来,LeetCode,牛客网)

    一.三数之和:LeetCode 15 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. ...

  6. 牛客网暑期ACM多校训练营(第七场)Bit Compression

    链接:https://www.nowcoder.com/acm/contest/145/C 来源:牛客网 题目描述 A binary string s of length N = 2n is give ...

  7. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 G.路径-带条件的树的直径变形-边权最大,边数偶数的树上的最长路径-树形dp

    链接:https://ac.nowcoder.com/acm/contest/558/G 来源:牛客网 路径 小猫在研究树. 小猫在研究路径. 给定一棵N个点的树,每条边有边权,请你求出最长的一条路径 ...

  8. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 D.寻找-树上LCA(树上a到b的路径上离c最近的点)

    链接:https://ac.nowcoder.com/acm/contest/558/D来源:牛客网 寻找 小猫在研究树. 小猫在研究树上的距离. 给定一棵N个点的树,每条边边权为1. Q次询问,每次 ...

  9. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 C.二元-K个二元组最小值和最大-优先队列+贪心(思维)

    链接:https://ac.nowcoder.com/acm/contest/558/C来源:牛客网 小猫在研究二元组. 小猫在研究最大值. 给定N个二元组(a1,b1),(a2,b2),…,(aN, ...

  10. 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 A.串串-后缀自动机模板题

    链接:https://ac.nowcoder.com/acm/contest/558/A来源:牛客网 A.串串 小猫在研究字符串. 小猫在研究字串. 给定一个长度为N的字符串S,问所有它的子串Sl…r ...

随机推荐

  1. Codeforces Round 971 (Div. 4) E 题解析

    # E题 Klee's SUPER DUPER LARGE Array!!! 题目描述 思路: 对于这道题,首先观察到题目求的是最小可能值,而且数据的范围是1e9范围,所以首先可以考虑的方法就是O(l ...

  2. 2023NOIP A层联测20 T3 点餐

    2023NOIP A层联测20 点餐 题目很好,可惜考试没想到. 思路 可以按照 \(b\) 从小到大排序,固定选择个数 \(k\),枚举选择的盘子 \(x\) 的 \(b\) 最大,最优解肯定是贪心 ...

  3. Java 技术,IBM 风格: 类共享

    共享类特性帮助减少内存占用并改进启动性能 Java 5.0 平台的 IBM 实现中新的共享类特性提供了一种完全透明和动态的方法,可以共享已经装载的所有类,而不会对共享类数据的 JVM 施加限制.这个特 ...

  4. 通过NPOI读取 excel指定Sheet 到 DataTable

    public static DataTable ReadExcelToDataTable(string fileName, string sheetName = null, bool isFirstR ...

  5. CVE-2023-32233 Linux 内核 UAF 漏洞分析与利用

    Linux 内核 nftable 模块在处理匿名 set 时存在 UAF. ‍ 漏洞分析 漏洞成因是 nf_tables_deactivate_set​ 在释放匿名 set 时没有将 set 的标记设 ...

  6. DA14531芯片固件逆向系列(3)- BLE收包流程分析及漏洞挖掘思路分享

    文章首发于 https://xz.aliyun.com/t/9194 前言 本文介绍定位和分析DA14531收包流程的方法,并提供简单的BLE协议漏洞挖掘思路. 定位收包函数 通过查看DA14531的 ...

  7. C#调用Python代码的方式(二),以PaddleOCR-GUI为例

    前言 前面介绍了在C#中使用Progress类调用Python脚本的方法,但是这种方法在需要频繁调用并且需要进行数据交互的场景效果并不好,因此今天分享的是C#调用Python代码的方式(二):使用py ...

  8. 工作中这样用MQ,很香!

    前言 消息队列(MQ)是分布式系统中不可或缺的技术之一. 对很多小伙伴来说,刚接触MQ时,可能觉得它只是个"传话工具",但用着用着,你会发现它简直是系统的"润滑剂&quo ...

  9. # 为什么要使用 MediatR 的 3 个理由和 1 个不使用它的原因

    为什么要使用 MediatR 的 3 个理由和 1 个不使用它的原因 https://codeopinion.com/why-use-mediatr-3-reasons-why-and-1-reaso ...

  10. Alpine介绍与apk的基本使用

    前言 Alpine是一个面向安全的轻量级的Linux发行版,相比与CentOS,ubuntu体积小很多,大约只有5M左右,由于体积小的原因,在很多场景下都会使用它来按需制作一些轻量级镜像,虽然体积小但 ...