数字游戏 - 华为OD统一考试

news/2024/7/20 18:07:34 标签: 华为od, 算法, java, python, c++, 面试, 机试

OD统一考试(B卷)

分值: 100分

题解: Java / Python / C++

alt

题目描述

小明玩一个游戏。

系统发1+ n 张牌,每张牌上有一个整数。 第一张给小明,后 n 张按照发牌顺序排成连续的一行。

需要小明判断,后 n 张牌中,是否存在连续的若干张牌,其和可以整除小明手中牌上的数字。

输入描述

输入数据有多组,每组输入数据有两行,输入到文件结尾结束。

第一行有两个整数 n 和 m,空格隔开。m 代表发给小明牌上的数字。

第二行有 n 个数,代表后续发的 n 张牌上的数字,以空格隔开。

输出描述

对每组输入,如果存在满足条件的连续若干张牌,则输出1;否则,输出0。

备注:

  • 1≤ n ≤ 1000
  • 1≤ 牌上的整数 ≤ 400000
  • 输入的数组,不多于1000
  • 用例确保输入都正确,不需要考虑非法情况。

示例1

输入:
6 7
2 12 6 3 5 5
10 11
1 1 1 1 1 1 1 1 1 1


输出:
1
0

题解

主要思路是通过累加数组 psum 计算出前缀和。然后使用两层循环遍历所有可能的连续子数组,判断其和是否可以整除 m

Java

java">import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            int m = scanner.nextInt();

            int[] psum = new int[n + 1];
            for (int i = 0; i < n; i++) {
                int t = scanner.nextInt();
                psum[i + 1] = psum[i] + t;
            }

            boolean rs = false;
            for (int r = n; r > 0 && !rs; r--) {
                for (int l = 0; l < r; l++) {
                    if ((psum[r] - psum[l]) % m == 0) {
                        rs = true;
                        break;
                    }
                }
            }

            System.out.println(rs ? 1 : 0);
        }
    }
}

Python

python">while True:
    try:
        n, m = map(int, input().split())
        arr = list(map(int, input().split()))

        psum = [0] * (n + 1)
        for i in range(n):
            psum[i + 1] = psum[i] + arr[i]

        rs = False
        for r in range(n, 0, -1):
            for l in range(r):
                if (psum[r] - psum[l]) % m == 0:
                    rs = True
                    break

        print(1 if rs else 0)

    except EOFError:
        break

C++

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n,m;
    while(cin >> n) {
        cin >> m;
        vector<int> psum(n+1, 0);
        for(int i=0, t = 0; i < n; i++) {
            cin >> t;
            psum[i+1] = psum[i] + t;
        }

        bool rs = false;
        for(int r=n; r > 0 && !rs; r--) {
            for(int l=0; l < r; l++) {
                if((psum[r] - psum[l]) % m == 0) {
                    rs = true;
                    break;
                }
            }
        }

        cout << (rs ? 1 : 0) << endl;
    }

    return 0;
}

‍❤️‍华为OD机试面试交流群每日真题分享): 加V时备注“华为od加群”

🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏


http://www.niftyadmin.cn/n/5321271.html

相关文章

都是取所有行的某列数据,这个array[:,2]和array[:,2:3]有什么不同呢

效果图 代码 import numpy as nplist [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25] ] array np.array(list) print(array) 输出&#xff1a; [[ 1 2 3 4 5][ 6 7 8 9 10][11 12 13 14 15][16 17 18 19 20][21 22 23 24 25]]a arr…

虚拟化架构:提高系统性能的关键技术

一、虚拟化架构概述 虚拟化架构是一种把物理硬件资源&#xff0c;比如服务器、存储设备、网络设备&#xff0c;通过虚拟化技术抽象成虚拟资源的方法。这种架构允许将一台物理服务器分割成多个虚拟服务器&#xff0c;每个虚拟服务器都可以独立运行自己的操作系统和应用程序&…

多节点 docker 部署 elastic 集群

参考 Install Elasticsearch with Docker Images 环境 docker # docker version Client: Docker Engine - CommunityVersion: 24.0.7API version: 1.43Go version: go1.20.10Git commit: afdd53bBuilt: Thu Oct 26 09:08:01 202…

openssl3.2 - 官方demo学习 - client-conf.c

文章目录 openssl3.2 - 官方demo学习 - client-conf.c笔记client-conf.c配置文件格式 - connect.cnf备注END openssl3.2 - 官方demo学习 - client-conf.c 笔记 client-conf.c client-arg.c是从命令行参数中得到TLS服务器ip/port. client-conf.c 从配置文件中读取TLS服务器ip…

API对象上千个,有啥关联性,kubectl-tree一键搞定

关注【云原生百宝箱】公众号&#xff0c;获取更多云原生消息 "kubectl-tree 是一款强大的 kubectl 插件&#xff0c;通过 ownerReferences 实现 Kubernetes 对象之间的所有权关系探索。相较于 kubectl lineage&#xff0c;它不仅更全面理解 API 对象的逻辑关系&#xff0c…

react中概念性总结(四)

目录 React如何做性能优化&#xff0c;最少说出四点? 虚拟dom一定比真实dom快吗&#xff0c;为什么&#xff1f; 说说你对事件循环的理解&#xff1f; React路由传递参数的方式&#xff1f; 简述React的生命周期函数及含义&#xff1f; 说说react 中jsx语法糖的本质&…

Day28 17电话号码的字母组合 39组合求和 40组合求和II

17 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 因为输入的数字的数量是不确定的&#xff0c;所以for循环的次数也是不确定的&…

网页的介绍

目录 什么是网页&#xff1a; 网页的组成&#xff1a; 什么是HTML&#xff1a; 网页的总结&#xff1a; 浏览器&#xff1a; web标准&#xff1a; 为什么需要Web标准&#xff1a; web标准的构成&#xff1a; 什么是网页&#xff1a; 1.网站是指在因特网上根据一定的规…