牛客C++ACM模式输入输出11道题分析与总结

2023-05-16


tags: C++ Interview

写在前面

感觉好久没写博客了, 最近看的书多, 但是真正沉淀下来的东西却很少…

这次总结一下C++刷题中常用的一些IO操作, 也就是ACM模式中的一些基本操作.

看到知识星球里面推荐了牛客的一个比赛, 其中有11道题都是关于C++刷算法题完整程序的输入输出部分, 值得新手学习训练一下, 下面是我的解答, 均通过测试, 可以放心食用.

地址:
牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com);

之后我又给出了用 C 标准 IO 函数做的这些题的答案: 牛客网ACM模式输入输出11道题目的C++解答(C标准IO版).
大家可以参考.

1: 开胃菜

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

输入包括两个正整数a,b(1 <= a, b <= 1000),输入数据包括多组。
输出描述:
输出a+b的结果

#include <iostream>
using namespace std;
int main(void) {
    int a, b;
    while (cin >> a >> b) { cout << a + b << endl; }
}

2: 读取多个输入

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

输入描述:
输入第一行包括一个数据组数t(1 <= t <= 100)
接下来每行包括两个正整数a,b(1 <= a, b <= 1000)
输出描述:
输出a+b的结果

只比上面的题多了一个输入, 直接读取即可, 甚至不需要这个变量.

#include <iostream>
using namespace std;
int main(void) {
    int a, b, cnt;
    cin >> cnt;
    while (cin >> a >> b) { cout << a + b << endl; }
}

3: 多一个判断

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

输入描述:
输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入
输出描述:
输出a+b的结果

加上判断为0即可.

#include <iostream>
using namespace std;

int main(void) {
    int a, b;
    while (cin >> a >> b) {
        if (a + b == 0) break;
        cout << a + b << endl;
    }
}

4: 双循环读取

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

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

外层循环遍历行, 内层循环读取列.

#include <iostream>
using namespace std;

int main(void) {
    int a, n, tmp;
    while (true) {
        cin >> n;
        if (n == 0) break;
        tmp = 0;
        while (n--) {
            cin >> a;
            tmp += a;
        }
        cout << tmp << endl;
    }
}

5:同样双循环

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

输入描述:
输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。
接下来t行, 每行一组数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。
输出描述:
每组数据输出求和的结果

同样双循环, 有了外层读取到的行数, 直接作为循环变量即可.

#include <iostream>
using namespace std;
int main(void) {
    int a, n, tmp, nn;
    cin >> n;
    while (n--) {
        tmp = 0;
        cin >> nn;
        while (nn--) {
            cin >> a;
            tmp += a;
        }
        cout << tmp << endl;
    }
}

6: 双循环

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

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

有一点小小的区别, 注意读取第一个数之后进入内层循环.

#include <iostream>
using namespace std;
int main(void) {
    int a, tmp{}, n;
    while (cin >> n) {
        tmp = 0;
        while (n--) {
            cin >> a;
            tmp += a;
        }
        cout << tmp << endl;
    }
}

7: 双循环读取边界

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

输入描述:
输入数据有多组, 每行表示一组输入数据。

每行不定有n个整数,空格隔开。(1 <= n <= 100)。
输出描述:
每组数据输出求和的结果

注意边界条件, 没有数据范围之后只能用\n来判断, 当然还有用字符流的方法, 这里就不多说了.

#include <iostream>
using namespace std;

int main(void) {
    int a, tmp{};
    while (cin >> a) {
        tmp += a;
        if (cin.get() == '\n') {
            cout << tmp << endl;
            tmp = 0;
        }
    }
}

8: 字符数组操作

从这个题开始, 就到了字符数组部分了, 需要注意读取的时候的边界条件, 以及排序.

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

输入描述:
输入有两行,第一行n

第二行是n个字符串,字符串之间用空格隔开
输出描述:
输出一行排序后的字符串,空格隔开,无结尾空格

说的是没有结尾空格, 为了方便写我直接range-based-for, 但是也过了.

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main(void) {
    int n;
    string s;
    cin >> n;
    vector<string> ans(n);
    while (n--) {
        cin >> s;
        ans[n] = s;
    }
    sort(ans.begin(), ans.end());
    for (auto it : ans) cout << it << " ";
}

9: 字符数组

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

输入描述:
多个测试用例,每个测试用例一行。

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

这个题和上面的很像, 只不过需要自己考虑输入边界, 也就是\n情况.

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main(void) {
    string s;
    vector<string> ans{};
    while (cin >> s) {
        ans.emplace_back(s);
        if (cin.get() == '\n') {
            sort(ans.begin(), ans.end());
            for (auto it : ans) cout << it << " ";
            cout << endl;
            ans.clear();
        }
    }
}

10: 综合题

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

输入描述:
多个测试用例,每个测试用例一行。
每行通过,隔开,有n个字符,n<100
输出描述:
对于每组用例输出一行排序后的字符串,用’,'隔开,无结尾空格

比较复杂, 但是也可以接受, 用到了一个string的substr方法, 虽然资源占用大, 但是数据量小并不影响.

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

int main() {
    string s;
    vector<string> ans{};
    while (cin >> s) {
        int j = 0;
        for (int i{}; i < s.size(); ++i)
            if (s[i] == ',') ans.emplace_back(s.substr(j, i - j)), j = i + 1;
        ans.emplace_back(s.substr(j, s.size() - j));

        if (cin.get() == '\n') {
            sort(ans.begin(), ans.end());
            int n = ans.size();
            for (int i{}; i < n; ++i)
                cout << ans[i] << ((i == n - 1) ? "\n" : ",");
            ans.clear();
        }
    }
}

参考别人的sstream写法(简洁明了):

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <sstream>

using namespace std;

int main() {
    string s;
    while (getline(cin, s)) {
        vector<string> ves;
        string item;
        stringstream ss(s);
        while (getline(ss, item, ',')) ves.push_back(item);
        sort(ves.begin(), ves.end());
        for (int i{}; i < ves.size(); i++) {
            cout << ves[i];
            if (i != ves.size() - 1) cout << ',';
        }
        cout << endl;
    }
}

11: 细节题

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

数据范围:
0 < a , b < 2 × 1 0 10 0<a,b<2\times10^{10} 0<a,b<2×1010.

输入描述:
输入有多组测试用例,每组空格隔开两个整数
输出描述:
对于每组数据输出一行两个整数的和

最后的开胃菜, 注意数据范围即可.

#include <iostream>
using namespace std;
int main(void) {
    long long a, b;
    while (cin >> a >> b) { cout << a + b << endl; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

牛客C++ACM模式输入输出11道题分析与总结 的相关文章

  • Pytorch CAM特征可视化

    背景 类别激活映射 Class Activation Mapping CAM 用于对深度学习特征可视化 通过特征响应定位图像的关键部位 为深度学习可解释性提供了一种方法 ACM以热力图的方式展示了图像局部响应的强弱信息 对应于更强的位置具有
  • hdu 1438 钥匙计数之一

    Problem acm hdu edu cn showproblem php pid 1438 Reference blog csdn net u010405898 article details 9530769 blog csdn net
  • csu 1811 Tree Intersection 2016湖南省赛 I

    Problem acm csu edu cn csuoj problemset problem pid 1811 vjudge net contest 161962 problem I Reference blog csdn net qwb
  • 字符串、字符数组的截取函数:strncpy、strsub

    字符数组的截取函数 字符串截取函数
  • 已知年月日利用公式求星期几模板

    在本文中 我们将使用C语言实现基于已知的年月日计算星期几的公式 这个公式被称为 蔡勒公式 Zeller s Congruence 是一种快速求解星期几的方法 代码分析 首先 我们需要对月份进行调整 如果月份小于3 即1月或2月 则将其视为上
  • HDU2085核反应堆

    Time Limit 1000 1000 MS Java Others Memory Limit 32768 32768 K Java Others Total Submission s 22891 Accepted Submission
  • 贪心算法之田忌赛马(超详细)

    简述 手把手教会贪心算法之田忌赛马 超详细 题目 田忌赛马 田忌和齐王赛马 两人各出n匹马 赢一场比赛得200两银子 输了赔200银子 平局不赔不赚 已知两人每匹马的速度 问田忌最多能赢多少银子 多组测试数据 每组数据的第一行是一个整数n
  • 首字母变大写

    小写字母变大写m 0 m 0 32 include
  • hdu 5818 Joint Stacks 2016 Multi-University 7

    Problem acm hdu edu cn showproblem php pid 5818 官方题解 bestcoder hdu edu cn blog 2016 multi university training contest 7
  • hdu 1827 Summer Holiday 强连通分量缩点

    题目 http acm hdu edu cn showproblem php pid 1827 题意 听说lcy帮大家预定了新马泰7日游 Wiskey真是高兴的夜不能寐啊 他想着得快点把这消息告诉大家 虽然他手上有所有人的联系方式 但是一个
  • Buncket Sort桶排序(c++)实现代码

    代码原理我就不说了 参考 算法导论 原书第三版 p112 直接上代码会不会很爽 ConsoleApplication1 cpp 定义控制台应用程序的入口点 This programme is designed to show the Bun
  • hdu 1255 覆盖的面积

    Problem acm hdu edu cn showproblem php pid 1255 Reference hdu 1255 覆盖的面积 矩形面积并 矩形面积交 矩形周长并 线段树 扫描线总结 Meaning 给出 n 个矩形 求它
  • 三种寻找最长递增(减)子序列的方法【LIS】

    最长递增 减 子序列 LIS 三种解法 问题 给定一个序列data 1 6 2 5 7 9 求出他的的最长递增子序列 容易看出为 1 2 5 7 9 长度为5 同时这种问题还有一些衍生问法如 最长非递增 减 增子序列 最长递减子序列等解法都
  • HDU1007(最近点对问题)

    题意不难理解 就是找到最近的两个点 计算其距离 除以2就是所求的圆的半径 思路很简单 运用分治的思想 先划分区间 分别找到左右区间中的最近点对 再合并区间 找到区间间的最近点对 注意如果用qsort 进行排序可能会超时 include
  • “Shopee杯” 武汉大学(网络预选赛)D - DIY Masks at Home

    Shopee杯 武汉大学 网络预选赛 D DIY Masks at Home 题目链接 Click 时间限制 C C 5秒 其他语言10秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 题
  • Codeforces-1454E Number of Simple Paths(基环树-思维)

    题目大意 给你n个点 n条边 求图中简单路径的个数 题目思路 n个点n条边 那么图中一定有一个环 拿这个图来讲 我们将两点间的关系分为4种 1 两点都在环上 简单路径的个数为2 例如2与5 2 一个点在环上一个点不在环上 简单路径个数为2
  • 数的划分(递归)

    整数划分是另外的问题 题目描述 Description 将整数n分成k份 且每份不能为空 任意两种划分方案不能相同 不考虑顺序 例如 n 7 k 3 下面三种划分方案被认为是相同的 7 1 1 5 7 1 5 1 7 5 1 1 问有多少种
  • 回溯--深度优先搜索(图的M着色问题 poj1129)

    回溯 图的m着色问题 题目描述 给定无向连通图G V E 和m种不同的颜色 用这些颜色为图G的各顶点着色 每个顶点着一种颜色 是否有一种着色法使G中相邻的两个顶点有不同的颜色 这个问题是图的m可着色判定问题 若一个图最少需要m种颜色才能使图
  • hdu 3966 Aragorn's Story

    Problem acm hdu edu cn showproblem php pid 3966 Reference 树链剖分 树链剖分原理 树链剖分详解及模板 HDU3966 树链剖分 Meaning 一棵 n 个点的树 每给结点有个值 三
  • GYM-102920-L. Two Buildings(决策单调性+分治)

    题目链接 题目大意 求一段序列的 h i h j j i 的最大值 step1 转化一下题意 h i h j j i h j h i j i 令a i h i b i h i 然后全部转化为两种坐标 i a i i b i 这样题目就转化成

随机推荐

  • win10 安装 Linux子系统(WSL)

    序 xff1a 前段时间字节不是发布了 modernJS 的开源项目吗 xff1f 大概看了一部分的内容 xff0c 这些的东西就不一一列出来了 xff0c 本来想尝一口的 xff0c 在环境准备的系统那里就先折了一下 xff08 目前支持
  • Java 集合

    ArrayList 默认长度为10 indexOf lastIndexOf 通过equals方法判断索引 span class token keyword public span span class token keyword int s
  • Java 多线程知识

    参考链接 xff1a https www cnblogs com kingsleylam p 6014441 html https blog csdn net ly0724ok article details 117030234 https
  • Java I/O

    参考链接 xff1a https blog csdn net m0 71563599 article details 125120982 https www cnblogs com shamo89 p 9860582 html https
  • 最小生成树 prim算法(附代码)

    prim算法是以一个根节点开始慢慢往下延伸 xff0c 不断寻找距生成树最短的距离的节点 xff0c 然后将该节点纳入生成树的集合中 xff0c 然后再将该节点影响的其他未纳入生成树节点的距离更新 xff08 缩小与生成树的距离 xff09
  • cdr x4检测显示软件产品已被禁用警告弹窗,如何解决教程分享

    偶尔翻开移动硬盘 xff0c 找到这货 xff0c CorelDraw X4简体中文正式版 网上现在比较难下载得到了 xff0c X4是我最常用的一个 现在把它分享出来 xff0c 有需要的可以去下载使用 orelDRAW X4打开显示被禁
  • 数据结构与算法题目集(中文) 6-1 单链表逆转 (20 分)

    本题要求实现一个函数 xff0c 将给定的单链表逆转 函数接口定义 xff1a List Reverse List L 其中List结构定义如下 xff1a typedef struct Node PtrToNode struct Node
  • HTML5 Table 布局实现 商品列表

    运行结果如上 下面说说设计过程 xff1a 一开始试探的做的时候 xff0c 是建立了一个table xff0c 这个table里面放一本图书的信息 然后建立了一个列 xff0c 然后建立了个td xff0c td里面放图片 xff0c t
  • POJ 1050 To the Max(动态规划)

    Given a two dimensional array of positive and negative integers a sub rectangle is any contiguous sub array of size 1 1
  • web前端 背景色属性bgcolor

    通过 lt body gt 元素中的bgcolor属性来设定网页的背景颜色 其语法格式如下 xff1a lt body bgcolor 61 34 value 34 gt 颜色是属性值的设定有三种方法 xff1a 1 颜色名称 规定颜色值为
  • java连接数据库步骤

    1 加载驱动 Class forname 数据库驱动名 2 建立数据库连接 使用DriverManager类的getConnection 静态方法来获取数据库连接对象 xff0c 其语法格式如下所示 Connection conn 61 D
  • 怎么从零开始运行github / 现成的项目

    这篇博客是作为非计软科班出身的我记录的一些经验 xff0c 希望得到交流和批评 目录 环境配置 通过文件命名了解项目 demo 代码运行的入口 设定参数的文件 build 通过代码了解项目 64 装饰器 一些交流时用到的术语 API 交流或
  • 生产环境中使用Kolla部署OpenStack-allinone云平台(红帽8版本)

    CentOS8系统中使用Kolla部署OpenStack allinone云平台 Kolla概述和openstack所有结点linux系统初始配置 kolla是openstack下面用于自动化部署的一个项目 xff0c 它基于docker和
  • vue2项目-request配置put请求Content-Type为x-www-form-urlencoded

    在项目中遇到需要使用put请求的接口 使用的方式是x www form urlencoded 步骤梳理 在项目的request js文件是默认配置了json方式的 span class token keyword import span a
  • STM32学习第一课——新建工程与点亮LED灯

    第一次接触到32位的MCU与之前所学的51单片机和430单片机都是有所不同的 xff0c STM32是用库函数来写程序的这样一来不管是从代码的编写和移植都会方便很多 以下是今天所学的东西 xff1a 1 新建工程 个人觉得不用去新建一个工程
  • 基于arm架构的ubuntu18 .04安装Anaconda3 + pytorch+python3.9

    记录一下项目踩坑经历 xff08 查了很多资料 xff0c 感觉都是对有基础的人来说的 xff0c 对于刚接触深度学习环境的小白并不友好 xff0c 很多细节并没有 xff0c 各种坑无数 xff0c 我也是花了好长时间才弄清楚 xff09
  • MathType7应用中文版特色功能介绍

    MathType 是由美国Design Science公司开发的功能强大的数学公式编辑器 xff0c 它同时支持Windows和Macintosh 操作系统 xff0c 与常见的文字处理软件和演示程序配合使用 xff0c 能够在各种文档中加
  • QT的延时函数

    延时函数在收发数据的时候用处很大 在其他方面也有用处 这里提供四种方法 1 多线程程序 使用QThread sleep 或者QThread msleep 或QThread usleep 或QThread wait 进行延时处理 Sleep不
  • ios基础篇(八)—— iOS触摸事件

    iOS中的事件 iOS事件中分为三大类 xff0c 触摸事件 xff0c 加速器事件 xff0c 远程控制事件 响应者对象 在iOS 中 不是任何对象都是能处理事件的 xff0c 只有继承于UIResponder 的对象才能接受并且处理事件
  • 牛客C++ACM模式输入输出11道题分析与总结

    tags C 43 43 Interview 写在前面 感觉好久没写博客了 最近看的书多 但是真正沉淀下来的东西却很少 这次总结一下C 43 43 刷题中常用的一些IO操作 也就是ACM模式中的一些基本操作 看到知识星球里面推荐了牛客的一个