当前位置: 首页 > article >正文

2024 年 6 月青少年软编等考 C 语言四级真题解析

目录

  • T1. 人以群分
    • 思路分析
  • T2. 那就别担心了
    • 思路分析
  • T3. 凑零钱
    • 思路分析
  • T4. 拼题 A 打卡奖励
    • 思路分析

T1. 人以群分

社交网络中我们给每个人定义了一个 “活跃度”,现希望根据这个指标把人群分为两大类,即外向型( o u t g o i n g outgoing outgoing,即活跃度高的)和内向型( i n t r o v e r t e d introverted introverted,即活跃度低的)。要求两类人群的规模尽可能接近,而他们的总活跃度差距尽可能拉开。

时间限制:1 s
内存限制:64 MB

  • 输入
    输入第一行给出一个正整数 N N N 2 ≤ N ≤ 1 0 5 2 ≤ N ≤ 10^5 2N105)。随后一行给出 N N N 个正整数,分别是每个人的活跃度,其间以空格分隔。题目保证这些数字以及它们的和都不会超过 2 31 2^{31} 231
  • 输出
    按下列格式输出:
    Outgoing #: N1
    Introverted #: N2
    Diff = N3
    
    其中 N 1 N1 N1 是外向型人的个数; N 2 N2 N2 是内向型人的个数; N 3 N3 N3 是两群人总活跃度之差的绝对值。
  • 样例输入 1
    10
    23 8 10 99 46 2333 46 1 666 555
    
  • 样例输出 1
    Outgoing #: 5
    Introverted #: 5
    Diff = 3611
    
  • 样例输入 2
    13
    110 79 218 69 3721 100 29 135 2 6 13 5188 85
    
  • 样例输出 2
    Outgoing #: 7
    Introverted #: 6
    Diff = 9359
    

思路分析

此题考查简单模拟,在四级考试中难度较低。

将输入数据进行排序,然后将第 1 ∼ ⌊ n / 2 ⌋ 1\sim \lfloor n/2\rfloor 1n/2 个人归为内向型,其余人归为外向型,分别计算活跃度之和,然后求出其差值即可。

/*
 * Name: T1.cpp
 * Problem: 人以群分
 * Author: Teacher Gao.
 * Date&Time: 2025/02/22 13:55
 */

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
   
    ios::sync_with_stdio(false);
    cin.tie(0);

    int n, a[100005];
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];

    sort(a + 1, a + n + 1);

    int outgoing = 0, introverted = 0;
    for (int i = 1; i <= n / 2; i++) introverted += a[i];
    for (int i = n / 2 + 1; i <= n; i++) outgoing += a[i];

    printf("Outgoing #: %d\n", n - n / 2);
    printf("Introverted #: %d\n", n / 2);
    printf("Diff = %d\n", outgoing - introverted);

    return 0;
}

T2. 那就别担心了

下图转自 “英式没品笑话百科” 的新浪微博 —— 所以无论有没有遇到难题,其实都不用担心。
在这里插入图片描述
博主将这种逻辑推演称为 “逻辑自洽”,即从某个命题出发的所有推理路径都会将结论引导到同一个最终命题(开玩笑的,千万别以为这是真正的逻辑自洽的定义……)。现给定一个更为复杂的逻辑推理图,本题就请你检查从一个给定命题到另一个命题的推理是否是 “逻辑自洽” 的,以及存在多少种不同的推理路径。例如上图,从 “你遇到难题了吗?” 到 “那就别担心了” 就是一种 “逻辑自洽” 的推理,一共有 3 3 3 条不同的推理路径。

时间限制:1 s
内存限制:64 MB

  • 输入
    输入首先在一行中给出两个正整数 N N N 1 < N ≤ 500 1 < N ≤ 500 1<N500)和 M M M,分别为命题个数和推理个数。这里我们假设命题从 1 1 1 N N N 编号。
    接下来 M M M 行,每行给出一对命题之间的推理关系,即两个命题的编号 S 1 , S 2 S_1, S_2 S1,S2,表示可以从 S 1 S_1 S1 推出 S 2 S_2 S2。题目保证任意两命题之间只存在最多一种推理关系,且任一命题不能循环自证(即从该命题出发推出该命题自己)。
    最后一行给出待检验的两个命题的编号 A , B A, B A,B
  • 输出
    在一行中首先输出从 A

http://www.kler.cn/a/564337.html

相关文章:

  • Kafka消费者相关
  • HAL库 IIC写和读函数
  • 神经网络 - 激活函数(ReLU 函数 - 基本概念)
  • 2025年前端高频面试题(含答案)
  • MOBA:长上下文 LLMs 的混合块注意机制
  • RabbitMQ系列(一)架构解析
  • 第002文-kali虚拟机安全与网络配置
  • 3-2 WPS JS宏 工作簿的打开与保存(模板批量另存为工作)学习笔记
  • VSCode设置terminal路径默认为文件所在路径
  • Vue.js响应式基础
  • 【漫话机器学习系列】108.线性无关(Linearly Independent)
  • 斩波放大器
  • Rider 安装包 绿色版 Win/Mac/Linux 适合.NET和游戏开发者使用 2025全栈开发终极指南:从零配置到企业级实战
  • 解决“ReadTimeoutError:HTTPSConnectionPool”pip安装超时问题
  • IO与NIO的区别
  • 独家|百度重提UGC,贴吧能否打头阵?
  • 【数据分析】5 设计不同业务分析框架
  • 写数据库没报错,但是数据库数据没变化
  • 使用 Git、Postman、Newman、Jenkins 与邮件构建自动化接口测试及通知流程
  • 日常工作中Redis常用命令