【荣耀笔试题汇总】2024-05-09-荣耀春招笔试题-三语言题解(CPP/Python/Java)

news2024/11/28 22:35:00

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新荣耀近期的春秋招笔试题汇总~

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📧 清隆这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 清隆领取,会在飞书进行同步的跟新。

文章目录

    • 🚗 01.K小姐的数字游戏
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 🚕 02.K小姐的在线学习系统
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 🚙 03.元素圈的奇妙组合
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 写在最后
    • 📧 清隆这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 清隆领取,会在飞书进行同步的跟新。

🚗 01.K小姐的数字游戏

题目描述

K小姐非常喜欢玩数字游戏。这一次,她想要判断给定的数字序列是否满足特定的规则。

存在多个数字序列,每个数字序列由 N N N 个正整数组成,数字之间以空格隔开,并且这些数字都大于 0 0 0 小于 100 100 100

规则如下:

  1. 如果相邻的数字是两位数和一位数交替出现,则该序列是合法的。
  2. 如果序列中第一个和最后一个数是两位数,且中间数字都是一位数,则序列是合法的。
  3. 如果序列中第一个和最后一个是一位数,且中间数字都是两位数,则序列是合法的。

输入格式

输入多个数字序列,每个数字序列独占一行。每个数字序列由 N N N 个正整数组成,所有整数都大于 0 0 0 小于 100 100 100,每个整数之间由空格分隔, 2 ≤ N ≤ 100 2 \leq N \leq 100 2N100。输入保证合法。

输出格式

校验多个数字序列是否合法,合法时返回 true,不合法时返回 false。校验结果用空格分开,行末无多余空格。

样例输入

1 23 3 42 3 56
44 1 5 71 9 35

样例输出

true false

数据范围

2 ≤ N ≤ 100 2 \leq N \leq 100 2N100,序列中的数字均为大于 0 0 0 小于 100 100 100 的正整数。

题解

本题可以通过遍历序列,判断相邻数字的位数是否满足题目要求来解决。具体思路如下:

  1. 遍历整个序列,判断相邻数字的位数是否交替出现。如果出现相邻数字位数相同的情况,则将 flg[0] 置为 0 0 0,表示不满足规则 1 1 1
  2. 统计序列中每个数字的位数,并使用 Counter 统计不同位数的数量。
  3. 判断序列的第一个和最后一个数字的位数是否相同,且该位数在序列中只出现了两次。如果满足条件,则将 flg[1] 置为 1 1 1,表示满足规则 2 2 2 或规则 3 3 3
  4. 最后,如果 flg 中存在 1 1 1,则说明序列合法,返回 true;否则返回 false

参考代码

  • Python
from collections import Counter

while True:
    try:
        s = list(map(str, input().split()))
        
        def check(s):
            n = len(s)
            flg = [1, 0]
            
            for i in range(n - 1):
                a, b = s[i], s[i + 1]
                if len(a) == len(b):
                    flg[0] = 0
                    break
            
            sz = [len(val) for val in s]
            d = Counter(sz)
            
            if sz[0] == sz[-1] and d[sz[0]] == 2:
                flg[1] = 1
            
            return max(flg) >= 1
        
        print('true' if check(s) else 'false', end=' ')
    except:
        break
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        while (sc.hasNextLine()) {
            String[] s = sc.nextLine().split(" ");
            boolean res = check(s);
            System.out.print(res ? "true " : "false ");
        }
    }
    
    private static boolean check(String[] s) {
        int n = s.length;
        int[] flg = {1, 0};
        
        for (int i = 0; i < n - 1; i++) {
            String a = s[i], b = s[i + 1];
            if (a.length() == b.length()) {
                flg[0] = 0;
                break;
            }
        }
        
        int[] sz = new int[n];
        for (int i = 0; i < n; i++) {
            sz[i] = s[i].length();
        }
        
        Map<Integer, Integer> d = new HashMap<>();
        for (int num : sz) {
            d.put(num, d.getOrDefault(num, 0) + 1);
        }
        
        if (sz[0] == sz[n - 1] && d.get(sz[0]) == 2) {
            flg[1] = 1;
        }
        
        return Math.max(flg[0], flg[1]) >= 1;
    }
}
  • Cpp
#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;

bool check(vector<string>& s) {
    int n = s.size();
    int flg[2] = {1, 0};
    
    for (int i = 0; i < n - 1; i++) {
        string a = s[i], b = s[i + 1];
        if (a.length() == b.length()) {
            flg[0] = 0;
            break;
        }
    }
    
    vector<int> sz(n);
    for (int i = 0; i < n; i++) {
        sz[i] = s[i].length();
    }
    
    unordered_map<int, int> d;
    for (int num : sz) {
        d[num]++;
    }
    
    if (sz[0] == sz[n - 1] && d[sz[0]] == 2) {
        flg[1] = 1;
    }
    
    return max(flg[0], flg[1]) >= 1;
}

int main() {
    string line;
    while (getline(cin, line)) {
        vector<string> s;
        int pos = 0;
        while ((pos = line.find(" ")) != string::npos) {
            s.push_back(line.substr(0, pos));
            line.erase(0, pos + 1);
        }
        s.push_back(line);
        
        bool res = check(s);
        cout << (res ? "true " : "false ");
    }
    
    return 0;
}

本题考察对数字序列的判断和统计。通过遍历序列并判断相邻数字的位数关系,再结合对序列中数字位数的统计,可以判断序列是否满足题目给定的规则。题目难度不大,是一道比较基础的字符串处理和统计题目。

🚕 02.K小姐的在线学习系统

题目描述

K小姐的学校有一个在线学习系统,每门课程由 N ( 0 < N ≤ 10000 ) N(0 < N \leq 10000) N(0<N10000) 个页面组成,学生需要从第一页开始按顺序学习到最后一页,然后提交学习记录。

系统会记录每个页面停留的时间(单位:秒),当学生提交时会分析时间是否满足要求。分析规则如下:每分钟(60秒)之内学完的页面数不能大于4页。

例如,系统记录到某学生页面停留时间如下:
10 120 10 20 10 10 50
该学生第1分钟学完1页,第2分钟学完0页,第3分钟学完5页,第4分钟学完1页,则判定为不满足要求。

请你帮助K小姐完成检查学生学习时间是否满足要求的程序。

输入格式

第一行包含一个整数 T T T,表示测试数据组数。

对于每组测试数据:
第一行包含一个整数 N N N,表示课程页面数。
第二行包含 N N N 个整数,表示每个页面的停留时间,以空格分隔。

输出格式

对于每组测试数据,输出一行,如果满足要求则输出1,否则输出0。

样例输入

5
2 10 10
4 10 15 20 30
5 10 10 10 10 10
6 10 20 20 70 10 10
8 10 120 10 10 10 10 10 10

样例输出

1
1
0
1
0

数据范围

  • 1 ≤ T ≤ 10 1 \leq T \leq 10 1T10
  • 1 ≤ N ≤ 10000 1 \leq N \leq 10000 1N10000
  • 每个页面的停留时间不超过 1000 1000 1000 秒。

题解

可以使用一个哈希表来记录每一分钟内学习的页面数量。遍历每个页面的停留时间,累加当前页面的时间,计算出当前页面属于第几分钟,然后在哈希表中将对应分钟的页面数加一。如果发现某一分钟的页面数超过了4,就说明不满足要求,直接返回0。如果遍历完所有页面后没有出现超过4页的情况,则说明满足要求,返回1。

参考代码

  • Python
def check_learning_time():
    n = int(input())
    times = list(map(int, input().split()))
    
    page_counts = {}
    cur_time = 0
    
    for time in times:
        cur_time += time
        minute = (cur_time - 1) // 60
        page_counts[minute] = page_counts.get(minute, 0) + 1
        if page_counts[minute] > 4:
            return 0
    
    return 1

t = int(input())
for _ in range(t):
    print(check_learning_time())
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int t = scanner.nextInt();
        
        while (t-- > 0) {
            int n = scanner.nextInt();
            int[] times = new int[n];
            for (int i = 0; i < n; i++) {
                times[i] = scanner.nextInt();
            }
            
            System.out.println(checkLearningTime(times));
        }
    }
    
    private static int checkLearningTime(int[] times) {
        Map<Integer, Integer> pageCounts = new HashMap<>();
        int curTime = 0;
        
        for (int time : times) {
            curTime += time;
            int minute = (curTime - 1) / 60;
            pageCounts.put(minute, pageCounts.getOrDefault(minute, 0) + 1);
            if (pageCounts.get(minute) > 4) {
                return 0;
            }
        }
        
        return 1;
    }
}
  • Cpp
#include <iostream>
#include <unordered_map>
using namespace std;

int checkTime() {
    int n;
    cin >> n;
    
    unordered_map<int, int> pageCount;
    int curTime = 0;
    
    for (int i = 0; i < n; i++) {
        int time;
        cin >> time;
        curTime += time;
        int minute = (curTime - 1) / 60;
        pageCount[minute]++;
        if (pageCount[minute] > 4) {
            return 0;
        }
    }
    
    return 1;
}

int main() {
    int t;
    cin >> t;
    
    while (t--) {
        cout << checkTime() << endl;
    }
    
    return 0;
}

🚙 03.元素圈的奇妙组合

题目描述

在 K小姐的魔法世界中,每个法师可以控制多种元素,通过将这些元素排列成一个圈来释放强大的魔法。一个由 m m m 个元素组成的圈可以通过旋转或翻转得到多种不同的排列,但这些排列在法师看来是等效的。现在给定 n n n 种不同的元素,要求计算出由这些元素组成的长度为 m m m 的圈能有多少种本质不同的组合方式。由于结果可能非常大,请输出结果对 1000000007 1000000007 1000000007 取模后的值。

输入格式

输入包含两个整数 n n n m m m

输出格式

输出一个整数,表示本质不同的组合方式的数量模 1000000007 1000000007 1000000007

样例输入

3 3

样例输出

10

数据范围

  • 1 ≤ n ≤ 20000 1 \leq n \leq 20000 1n20000
  • 1 ≤ m ≤ 10000 1 \leq m \leq 10000 1m10000

题解

题目可以转化成完全背包求方案数,从 n n n 个物品中选,每个物品最多选 m m m 个,求恰好装满容积为 m m m 的背包的方案数,由于物品的体积为 1 ,所以这里可以看成每个物品可以无限选,即可直接等价为完全背包求方案数。

参考代码

  • Cpp
#include<bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n, m;
    cin >> n >> m;
    vector<int> f(m + 1, 0);
    f[0] = 1;
    for (int i = 0; i < n; i++)
        for (int j = 1; j <= m; j++) {
            f[j] += f[j - 1];
            if (f[j] >= MOD) f[j] -= MOD;
        }
    cout << f[m] << "\n";
    return 0;
}
  • Python
MOD = 1000000007

def main():
    import sys
    input = sys.stdin.read
    n, m = map(int, input().split())
    f = [0] * (m + 1)
    f[0] = 1
    for _ in range(n):
        for j in range(1, m + 1):
            f[j] = (f[j] + f[j - 1]) % MOD
    print(f[m])

if __name__ == "__main__":
    main()
  • Java
import java.util.*;
import java.io.*;

public class Main {
    static final int MOD = 1000000007;

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] tokens = reader.readLine().split(" ");
        int n = Integer.parseInt(tokens[0]);
        int m = Integer.parseInt(tokens[1]);
        int[] f = new int[m + 1];
        f[0] = 1;
        for (int i = 0; i < n; i++) {
            for (int j = 1; j <= m; j++) {
                f[j] = (f[j] + f[j - 1]) % MOD;
            }
        }
        System.out.println(f[m]);
    }
}

写在最后

📧 清隆这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 清隆领取,会在飞书进行同步的跟新。

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1659075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解析Spring中的循环依赖问题:初探三级缓存

什么是循环依赖&#xff1f; 这个情况很简单&#xff0c;即A对象依赖B对象&#xff0c;同时B对象也依赖A对象&#xff0c;让我们来简单看一下。 // A依赖了B class A{public B b; }// B依赖了A class B{public A a; }这种循环依赖可能会引发问题吗&#xff1f; 在没有考虑Sp…

信息系统项目管理师0097:价值交付系统(6项目管理概论—6.4价值驱动的项目管理知识体系—6.4.6价值交付系统)

点击查看专栏目录 文章目录 6.4.6价值交付系统1.创造价值2.价值交付组件3.信息流6.4.6价值交付系统 价值交付系统描述了项目如何在系统内运作,为组织及其干系人创造价值。价值交付系统包括项目如何创造价值、价值交付组件和信息流。 1.创造价值 项目存在于组织中,包括政府机构…

kkkkkkkkkkkk564

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 人工智能与机器学习 &#x1f4dd;人工智能相关概念☞什么是人工智能、机器学习、深度学习☞人工智能发…

【LeetCode:LCR 077. 排序链表 + 链表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

发表博客之:gemm/threadblock/threadblock_swizzle.h 文件夹讲解,cutlass深入讲解

文章目录 [发表博客之&#xff1a;gemm/threadblock/threadblock_swizzle.h 文件夹讲解&#xff0c;cutlass深入讲解](https://cyj666.blog.csdn.net/article/details/138514145)先来看一下最简单的struct GemmIdentityThreadblockSwizzle结构体 发表博客之&#xff1a;gemm/th…

STM32G030C8T6:EEPROM读写实验(I2C通信)

本专栏记录STM32开发各个功能的详细过程&#xff0c;方便自己后续查看&#xff0c;当然也供正在入门STM32单片机的兄弟们参考&#xff1b; 本小节的目标是&#xff0c;系统主频64 MHZ,采用高速外部晶振&#xff0c;实现PB11,PB10 引脚模拟I2C 时序&#xff0c;对M24C08 的EEPRO…

就业班 第三阶段(zabbix) 2401--5.9 day1 普通集zabbix 5.0部署 nginx部署+agent部署

文章目录 环境一、zabbix 5.0 部署1、安装yum源2、安装相关软件3、数据库安装和配置mariaDB数据库mysql57数据库 安装mysql万能卸载mysql代码&#xff1a;启动mysql并初始化4、数据表导入5、修改配置&#xff0c;启动服务6、配置 web GUI7、浏览器访问注意数据加密的选项不要勾…

基于Springboot的滴答拍摄影

基于SpringbootVue的滴答拍摄影设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 摄影作品 摄影服务 摄影论坛 后台登录 后台首页 用户管理 摄影师管理 摄影作…

谷歌继续将生成式人工智能融入网络安全

谷歌正在将多个威胁情报流与 Gemini 生成人工智能模型相结合&#xff0c;以创建新的云服务。 Google 威胁情报服务旨在帮助安全团队快速准确地整理大量数据&#xff0c;以便更好地保护组织免受网络攻击。 本周在旧金山举行的 RSA 会议上推出的 Google 威胁情报服务吸收了 Mand…

旅游组团奖励标准,申报条件!利川市旅游组团奖励办法

利川市旅游组团奖励有哪些&#xff1f;关于利川市旅游组团奖励标准&#xff0c;申报条件整理如下&#xff1a; 第一条根据《湖北省人民政府办公厅印发关于更好服务市场主体推动经济稳健发展若干政策措施的通知》&#xff08;鄂政办发〔2022〕54号&#xff09;、《恩施州人民政府…

力扣2105---给植物浇水II(Java、模拟、双指针)

题目描述&#xff1a; Alice 和 Bob 打算给花园里的 n 株植物浇水。植物排成一行&#xff0c;从左到右进行标记&#xff0c;编号从 0 到 n - 1 。其中&#xff0c;第 i 株植物的位置是 x i 。 每一株植物都需要浇特定量的水。Alice 和 Bob 每人有一个水罐&#xff0c;最初是…

Centos固定静态ip地址

这里我用的是Vmware虚拟机搭建的三台机器 进入 cd /etc/sysconfig/network-scripts然后使用 ip addr命令&#xff0c;查看自己虚拟机的以太网地址。 我这里是ens33 上面的第一个选项是本地环回地址&#xff0c;不用管它 然后查看刚刚进入的network-scripts目录下的文件 找到…

【机器学习】AI时代的核心驱动力

机器学习&#xff1a;AI时代的核心驱动力 一、引言二、机器学习的基本原理与应用三、机器学习算法概览四、代码实例&#xff1a;线性回归的Python实现 一、引言 在数字化浪潮席卷全球的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经不再是科幻小说中的遥远概念&…

106短信平台疑难解答:为何手机正常却收不到短信?

当您使用群发短信平台发送消息时&#xff0c;有时尽管系统提示发送成功&#xff0c;但手机却未能收到短信。这背后可能隐藏着一些不为人知的原因。 首先&#xff0c;我们要明确&#xff0c;在正常情况下&#xff0c;只要手机状态正常&#xff0c;都应该能够接收到短信。然而&am…

图表控件LightningChart .NET中文教程 - 创建3D网格模型实时着色应用

LightningChart.NET完全由GPU加速&#xff0c;并且性能经过优化&#xff0c;可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D&#xff0c;高级3D&#xff0c;Polar&#xff0c;Smith&#xff0c;3D饼/甜甜圈&#xff0c;地理地图和GIS图表以及适用于科学…

【论文泛读|附源码】如何进行动力学重构? 神经网络自动编码器结合SINDy发现数据背后蕴含的方程

这一篇文章叫做 数据驱动的坐标发现与方程发现算法。 想回答的问题很简单&#xff0c;“如何根据数据写方程”。 想想牛顿的处境&#xff0c;如何根据各种不同物体下落的数据&#xff0c;写出万有引力的数学公式的。这篇文章就是来做这件事的。当然&#xff0c;这篇论文并没有…

远程连接阿里云ECS

说明&#xff1a;ECS&#xff08;阿里云服务器&#xff09;可选择的系统镜像如下&#xff1a; 本文介绍基于Windows系统&#xff0c;对CentOS、Ubuntu、Windows这三个操作系统的连接方式&#xff0c;以及连接工具Windterm的使用。 CentOS & Windterm CentOS是我使用时间最…

df 中的 NoneType、空和 None

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 目录 简介什么是 NoneType&#xff1f;什么是空&#xff08;Empty&#xff09;&#xff1f;什么是 None&#xff1f;Python 中如何判断 NoneType&#xff1f;Pandas DataFrame 中的 NoneType、空和 None实操&#x…

《红警OL》更换新东家,中国儒意收购有爱互娱全部股权

易采游戏网5月10日消息&#xff0c;近日港股上市公司中国儒意发布公告&#xff0c;宣布将以2.59亿人民币全资收购北京有爱互娱科技有限公司。此次收购的卖方为持股94.1047%的北京朝夕光年信息技术有限公司和持股5.8953%的北京游逸科技有限公司。这一消息在游戏行业引起了广泛关…

Github 2024-05-10 Java开源项目日报Top10

根据Github Trendings的统计,今日(2024-05-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目10C++项目2JavaGuide - Java 程序员学习和面试指南 创建周期:2118 天开发语言:Java协议类型:Apache License 2.0Star数量:140773 个…