news 2026/8/7 5:12:13

卡牌游戏(Java/python/JavaScript/C/C++)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
卡牌游戏(Java/python/JavaScript/C/C++)

小明正在尝试一种新的牌游戏。游戏规则只如下:首先,小明拿到一张写有数字m的牌。 然后,他会拿到另外n张牌,上面分别写有不同的数字,牌排成一排。小明的目标是从这排牌中找到一串连续的牌,这些牌上数字的总和可以被 m整除。你的任务是判断小明是否可以完成这个目标。
输入描述
第一行包含两个整数:n和 m。其中n是小明拿到的牌的数量(不包括写有 m 的牌),m 是写在第一张牌上的数字。第二行包含 n个整数,这些整数分别是n张牌上的数字,
输出描述
如果小明可以找到一个连续的牌串,这些牌上数字的和可以被 m 整除,输出“1"。如果找不到符合条件的牌串,输出"0”。

示例1

输入:

6 7
2 12 6 3 5 5

输出:

1

示例2

输入:

10 11
1 1 1 1 1 1 1 1 1 1

输出:

0

问题分析

需要判断是否存在一个连续子数组,其元素之和能被给定的整数m整除。关键在于利用前缀和和模运算的性质来高效解决问题。

解题思路

  1. 前缀和与模运算:计算前缀和数组prefix,其中prefix[i]表示前i个元素的和。若存在prefix[j] % m == prefix[i] % m(其中j > i),则子数组[i+1, j]的和能被m整除。
  2. 哈希表优化:使用哈希表记录前缀和模m的结果首次出现的位置。若同一余数再次出现,说明存在满足条件的子数组。

实现代码

Java
import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int m = scanner.nextInt(); int[] nums = new int[n]; for (int i = 0; i < n; i++) { nums[i] = scanner.nextInt(); } Map<Integer, Integer> modMap = new HashMap<>(); modMap.put(0, -1); int prefixMod = 0; boolean found = false; for (int i = 0; i < n; i++) { prefixMod = (prefixMod + nums[i]) % m; if (modMap.containsKey(prefixMod)) { found = true; break; } modMap.put(prefixMod, i); } System.out.println(found ? "1" : "0"); } }
Python
n, m = map(int, input().split()) nums = list(map(int, input().split())) mod_map = {0: -1} prefix_mod = 0 found = False for i in range(n): prefix_mod = (prefix_mod + nums[i]) % m if prefix_mod in mod_map: found = True break mod_map[prefix_mod] = i print(1 if found else 0)
JavaScript
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', (line) => { input.push(line); }).on('close', () => { const [n, m] = input[0].split(' ').map(Number); const nums = input[1].split(' ').map(Number); const modMap = new Map(); modMap.set(0, -1); let prefixMod = 0; let found = false; for (let i = 0; i < n; i++) { prefixMod = (prefixMod + nums[i]) % m; if (modMap.has(prefixMod)) { found = true; break; } modMap.set(prefixMod, i); } console.log(found ? "1" : "0"); });
C++
#include <iostream> #include <unordered_map> #include <vector> using namespace std; int main() { int n, m; cin >> n >> m; vector<int> nums(n); for (int i = 0; i < n; i++) { cin >> nums[i]; } unordered_map<int, int> modMap; modMap[0] = -1; int prefixMod = 0; bool found = false; for (int i = 0; i < n; i++) { prefixMod = (prefixMod + nums[i]) % m; if (modMap.find(prefixMod) != modMap.end()) { found = true; break; } modMap[prefixMod] = i; } cout << (found ? "1" : "0") << endl; return 0; }

代码说明

  • 输入处理:读取输入的nm和数组nums
  • 哈希表初始化:初始化哈希表modMap并预存0: -1,表示前缀和为0的虚拟位置。
  • 遍历数组:计算前缀和的模m结果,检查是否已存在于哈希表中。若存在则直接返回1,否则记录当前余数的位置。
  • 输出结果:根据是否找到满足条件的子数组输出10

这种方法的时间复杂度为O(n),空间复杂度为O(min(n, m)),适用于大规模数据。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/6 18:48:36

12、Red Hat Enterprise Linux硬件分析与管理指南

Red Hat Enterprise Linux硬件分析与管理指南 1. RPM包安装与信息查看 在安装示例包时,如果未安装 vpnc 包,会显示如下错误: error: Failed dependencies: vpnc is needed by startvpn-1.1-1.noarch若要强制安装该包以测试从示例中构建的软件包,可使用以下命令: r…

作者头像 李华
网站建设 2026/8/6 14:34:23

35、Linux 内核监控与调试:NUMA、AltSysRq 及 Kdump 全解析

Linux 内核监控与调试:NUMA、AltSysRq 及 Kdump 全解析 在 Linux 系统的运维和管理中,对内核的监控与调试至关重要。本文将深入探讨 NUMA 统计信息、AltSysRq 系统请求以及 Kdump 内核转储工具的使用,帮助你更好地理解和管理 Linux 内核。 1. NUMA 统计信息 NUMA(Non-Un…

作者头像 李华
网站建设 2026/8/5 11:27:24

DataEase开源BI工具完整指南:从零开始的数据可视化之旅

DataEase开源BI工具完整指南&#xff1a;从零开始的数据可视化之旅 【免费下载链接】DataEase 人人可用的开源 BI 工具 项目地址: https://gitcode.com/feizhiyun/dataease DataEase是一款人人可用的开源BI工具&#xff0c;让数据分析变得简单直观。作为一款基于GPLv3协…

作者头像 李华
网站建设 2026/8/7 1:56:36

Gutenberg性能优化终极指南:零成本加速WordPress编辑器

你是否曾经在编辑WordPress文章时&#xff0c;眼睁睁看着那个彩色的小圈圈转个不停&#xff1f;当页面加载缓慢、操作卡顿成为日常&#xff0c;是时候彻底解决Gutenberg编辑器的性能问题了。本文将从根源分析到实战验证&#xff0c;为你提供一套完整的优化方案。 【免费下载链接…

作者头像 李华
网站建设 2026/8/7 5:11:42

ag-ui与LangGraph集成终极指南:构建企业级AI工作流的完整教程

ag-ui与LangGraph集成终极指南&#xff1a;构建企业级AI工作流的完整教程 【免费下载链接】ag-ui 项目地址: https://gitcode.com/gh_mirrors/agu/ag-ui 在当今AI技术快速发展的时代&#xff0c;构建可靠、可扩展的复杂工作流已成为企业数字化转型的关键挑战。传统的线…

作者头像 李华
网站建设 2026/8/7 2:56:33

2026毕设ssm+vue基于架构的校园二手物品交易论文+程序

本系统&#xff08;程序源码&#xff09;带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于动漫内容管理系统的研究&#xff0c;现有研究主要以视频平台和综合性内容管理为主&#xff0c;专门针对动漫文章分类管理的…

作者头像 李华