【CSP】202209-1_如此编码Python实现

文章目录

    • @[toc]
      • 试题编号
      • 试题名称
      • 时间限制
      • 内存限制
      • 题目背景
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例1输入
      • 样例1输出
      • 样例2输入
      • 样例2输出
      • 样例3输入
      • 样例3输出
      • 样例3解释
      • 子任务
      • 提示
      • `Python`实现

试题编号

202209-1

试题名称

如此编码

时间限制

1.0s

内存限制

512.0MB

题目背景

  • 某次测验后,顿顿老师在黑板上留下了一串数字 23333 23333 23333便飘然而去,凝望着这个神秘数字,小 P P P同学不禁陷入了沉思

题目描述

  • 已知某次测验包含 n n n道单项选择题,其中第 i i i ( 1 ≤ i ≤ n ) (1 \leq i \leq n) (1in) a i a_{i} ai个选项,正确选项为 b i b_{i} bi,满足 a i ≥ 2 a_{i} \geq 2 ai2 0 ≤ b i < a i 0 \leq b_{i} < a_{i} 0bi<ai
  • 比如说, a i = 4 a_{i} = 4 ai=4表示第 i i i题有 4 4 4个选项,此时正确选项 b i b_{i} bi的取值一定是 0 0 0 1 1 1 2 2 2 3 3 3其中之一
  • 顿顿老师设计了如下方式对正确答案进行编码,使得仅用一个整数 m m m便可表示 b 1 b_{1} b1 b 2 b_{2} b2 ⋯ \cdots b n b_{n} bn
  • 首先定义一个辅助数组 c i c_{i} ci,表示数组 a i a_{i} ai的前缀乘积,当 1 ≤ i ≤ n 1 \leq i \leq n 1in时,满足:

c i = a 1 × a 2 × ⋯ × a i c_{i} = a_{1} \times a_{2} \times \cdots \times a_{i} ci=a1×a2××ai

  • 特别地,定义 c 0 = 1 c_{0} = 1 c0=1
  • 于是 m m m便可按照如下公式算出

m = ∑ i = 1 n c i − 1 × b i = c 0 × b 1 + c 1 × b 2 + ⋯ + c n − 1 × b n \begin{aligned} m &= \displaystyle\sum\limits_{i = 1}^{n}{c_{i - 1} \times b_{i}} \\ &= c_{0} \times b_{1} + c_{1} \times b_{2} + \cdots + c_{n - 1} \times b_{n} \end{aligned} m=i=1nci1×bi=c0×b1+c1×b2++cn1×bn

  • 易知, 0 ≤ m < c n 0 \leq m < c_{n} 0m<cn,最小值和最大值分别当 b i b_{i} bi全部为 0 0 0 b i = a i − 1 b_{i} = a_{i} - 1 bi=ai1时取得
  • 试帮助小 P P P同学,把测验的正确答案 b 1 b_{1} b1 b 2 b_{2} b2 ⋯ \cdots b n b_{n} bn从顿顿老师留下的神秘整数 m m m中恢复出来

输入格式

  • 从标准输入读入数据
  • 输入共两行
  • 第一行包含用空格分隔的两个整数 n n n m m m,分别表示题目数量和顿顿老师的神秘数字
  • 第二行包含用空格分隔的 n n n个整数 a 1 a_{1} a1 a 2 a_{2} a2 ⋯ \cdots a n a_{n} an,依次表示每道选择题的选项数目

输出格式

  • 输出到标准输出
  • 输出仅一行,包含用空格分隔的 n n n个整数 b 1 b_{1} b1 b 2 b_{2} b2 ⋯ \cdots b n b_{n} bn,依次表示每道选择题的正确选项

样例1输入

15 32767
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

样例1输出

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

样例2输入

4 0
2 3 2 5

样例2输出

0 0 0 0

样例3输入

7 23333
3 5 20 10 4 3 10

样例3输出

2 2 15 7 3 1 0

样例3解释

i i i 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7
a i a_{i} ai 3 3 3 5 5 5 20 20 20 10 10 10 4 4 4 3 3 3 10 10 10
b i b_{i} bi 2 2 2 2 2 2 15 15 15 7 7 7 3 3 3 1 1 1 0 0 0
c i − 1 c_{i - 1} ci1 1 1 1 3 3 3 15 15 15 300 300 300 3000 3000 3000 12000 12000 12000 36000 36000 36000

子任务

  • 50 % 50\% 50%的测试数据满足: a i a_{i} ai全部等于 2 2 2,即每道题均只有两个选项,此时 c i = 2 i c_{i} = 2^{i} ci=2i
  • 全部的测试数据满足: 1 ≤ n ≤ 20 1 \leq n \leq 20 1n20 a i ≥ 2 a_{i} \geq 2 ai2 c n ≤ 1 0 9 c_{n} \leq 10^{9} cn109(根据题目描述中的定义 c n c_{n} cn表示全部 a i a_{i} ai的乘积)

提示

  • 对任意的 1 ≤ j ≤ n 1 \leq j \leq n 1jn,因为 c j + 1 c_{j + 1} cj+1 c j + 2 c_{j + 2} cj+2 ⋯ \cdots 均为 c j c_{j} cj的倍数,所以 m m m除以 c j c_{j} cj的余数具有如下性质:

m % c j = ∑ i = 1 j c i − 1 × b i m \% c_{j} = \displaystyle\sum\limits_{i = 1}^{j}{c_{i - 1} \times b_{i}} m%cj=i=1jci1×bi

  • 其中 % \% %表示取余运算,令 j j j取不同的值,则有如下等式:

m % c 1 = c 0 × b 1 m % c 2 = c 0 × b 1 + c 1 × b 2 m % c 2 = c 0 × b 1 + c 1 × b 2 + c 2 × b 3 \begin{aligned} m \% c_{1} &= c_{0} \times b_{1} \\ m \% c_{2} &= c_{0} \times b_{1} + c_{1} \times b_{2} \\ m \% c_{2} &= c_{0} \times b_{1} + c_{1} \times b_{2} + c_{2} \times b_{3} \end{aligned} m%c1m%c2m%c2=c0×b1=c0×b1+c1×b2=c0×b1+c1×b2+c2×b3


Python实现

n, m = map(int, input().split())
a = list(map(int, input().split()))b = []
c = 1for i in range(n):temp = cc *= a[i]b.append((m % c) // temp)print(*b)

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

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

相关文章

【Angular开发】2023年促进您开发的最佳Angular库

如果你是一名开发人员&#xff0c;你可以理解平台的重要性&#xff0c;它可以加快开发过程&#xff0c;显著减少编码时间和工作量。 根据StackOverflow开发者2021年的调查&#xff0c;Angular是其中一个令人惊叹的平台&#xff0c;它一直赢得人们的喜爱&#xff0c;并获得了全…

【vtkWidgetRepresentation】第六期 vtkFinitePlaneRepresentation

很高兴在雪易的CSDN遇见你 &#xff0c;给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享VTK中的平面Plane表示方法&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起进步&#xff01; …

机器人阻抗控制直观(图示理解)与控制框架/架构

在刚性碰撞下&#xff0c;机器人的阻抗调节可以使其更好地适应外部环境。具体来说&#xff0c;通过建立力与位移之间的关系&#xff0c;并改变阻抗参数&#xff0c;可以控制机器人对外部力的响应。 在具体实现上&#xff0c;可以采用基于位置的阻抗控制或基于力的阻抗控制。基于…

【Java 基础】26 枚举

文章目录 1. 什么是枚举2. 定义3. 使用1&#xff09;常量2&#xff09;遍历3&#xff09;switch 4. 属性和方法1&#xff09;属性2&#xff09;方法 5. 实现原理6. 使用场景总结 1. 什么是枚举 枚举是列出某些有穷序列集的所有成员的程序&#xff0c;或者是一种特定类型对象的计…

Windows下使用CMD修改本地IP

在网络适配器界面查看当前网线连接的哪个网口&#xff0c;我当前连的是 以太网 这个名字的&#xff1a; 在windows下使用管理员权限打开CMD命令工具&#xff0c;输入如下命令(如我想本地ip改成192.168.2.4)&#xff1a; netsh interface ip set address "以太网" st…

LeetCode Hot100 78.子集

题目&#xff1a; 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 方法&#xff1a;灵神 选 or 不选 class Solution {private final List&…

spring 的概述和入门

​ 我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; …

信号量的使用和注意事项

大家好&#xff0c;今天给大家介绍信号量的使用和注意事项&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 信号灯(信号量)集 POSIX 线程中的同步用的是无名信号量 进程间的同步使…

乔拓云平台:微信小程序开发的全新视角与高效路径

随着微信小程序的日益普及&#xff0c;越来越多的人开始关注如何开发自己的小程序。对于没有开发经验的人来说&#xff0c;借助第三方平台如乔拓云&#xff0c;可以轻松实现小程序的开发。本文将介绍微信小程序开发需要学习的东西&#xff0c;并探讨如何借助乔拓云平台进行无经…

基于深度学习的钢铁缺陷检测系统(含UI界面,Python代码,数据集、yolov8)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov8 yolov8主要包含以下几种创新&#xff1a;         1. 添加注意力机制&#xff08;SE、CBAM等&#xff09;         2. 修改可变形卷积&#xff08;DySnake-主干c…

【改进YOLOv8】融合可变形大核注意力D-LKA-Attention的油气管道设备泄露检测系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着油气管道设备的广泛应用&#xff0c;油气泄露问题已经成为一个严重的环境和安全隐患。油气泄露不仅会造成环境污染&#xff0c;还可能引发火灾、爆炸等严重事…

掌握vue中国际化使用及配置

文章目录 &#x1f341;i18n组件安装&#x1f341;项目中配置 vue-i18n&#x1f341;编写语言包&#x1f341;国际化的使用 随着互联网的普及和全球化的发展&#xff0c;开发国际化的应用程序已经成为一种趋势。因此&#xff0c;将 VUE 应用程序国际化是非常有必要的。 以下是…

新时代商业旨意:传统商家如何变革?

随着新时代的到来&#xff0c;商业环境也在不断变化。在这个信息爆炸、消费者需求日益复杂化的时代&#xff0c;商业旨意已经不再仅仅是追求利润&#xff0c;而是转向了以客户为中心&#xff0c;追求价值共创、社会责任等多元化的目标。传统商家面临着诸多挑战&#xff0c;如何…

2023四川大学“腾讯杯”新生赛(同步赛)糖果(鸽巢原理)

这个数据范围, n 是 1 e 6 &#xff0c; a i 也是 1 e 6 n是1e6&#xff0c;a_i也是1e6 n是1e6&#xff0c;ai​也是1e6&#xff0c;任意 a i a j ∈ [ 0 , 2 e 6 ] a_ia_j \in [0, 2e6] ai​aj​∈[0,2e6]&#xff0c;所以如果有答案我们最多枚举 2 e 6 2e6 2e6个数就可以找到…

视频剪辑高手揭秘:如何批量减少时长并调整播放速度,提升视频效果

随着社交媒体的兴起&#xff0c;视频制作的需求越来越大。然而往往视频文件存在一些问题&#xff0c;例如时长过长&#xff0c;或者要调整播放速度以更好地传达信息。这些问题不仅影响了视频的观看体验&#xff0c;也可能导致视频难以在社交媒体上获得广泛的传播。那么&#xf…

Android Canvas 改变背景颜色

我有一个有两个 View 的应用 <com.myexample.ui.view.BackgroundView android:id"id/id_draw_canvas_classroom" android:layout_width"fill_parent" android:layout_height"fill_parent" android:layout_marginBottom"3dp" andro…

[EFI]Atermiter X99 Turbo D4 E5-2630v3电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板 Atermiter X99 Turbo D4 处理器 Intel Xeon E5-2630v3 已驱动内存Desktop DDR4 2666 MHz已驱动硬盘Netac NV7000已驱动显卡AMD Radeon RX 5700xt已驱动声卡瑞昱 英特尔 High Definition Audio 控制器ALC897已驱动网卡LucyRTL8125已驱动无线网卡蓝牙Broad…

基于Java个人作品管理系统

基于Java个人作品管理系统 功能需求 1、作品上传&#xff1a;系统允许用户上传各种类型的作品&#xff0c;如文字、图片、音频、视频等。上传过程应简单明了&#xff0c;支持批量上传。 2、作品分类&#xff1a;系统需要提供作品分类功能&#xff0c;用户可以根据自己的需求…

CNN,DNN,RNN,GAN,RL+图像处理常规算法(未完待续)

好的&#xff0c;让我们先介绍一些常见的神经网络模型&#xff0c;然后再讨论图像处理的常规算法。 神经网络模型&#xff1a; 1. CNN&#xff08;卷积神经网络&#xff09; 原理&#xff1a; CNN主要用于处理图像数据。它包含卷积层、池化层和全连接层。卷积层通过卷积操作…

文件夹重命名:提升工作效率,使用关键词替换法重命名文件夹

在日常生活和工作中&#xff0c;经常要处理大量的文件夹和文件。有时候&#xff0c;为了更好地管理和查找文件&#xff0c;要给文件夹重新命名。但是&#xff0c;重命名文件夹并不是一件容易的事情&#xff0c;尤其是当文件夹数量众多时。一个一个修改耗费极大的时间和精力&…