信息学奥赛一本通 2113:【24CSPJ普及组】小木棍(sticks) | 洛谷 P11229 [CSP-J 2024] 小木棍
【题目链接】
ybt 2113:【24CSPJ普及组】小木棍(sticks)
洛谷 P11229 [CSP-J 2024] 小木棍
【题目考点】
1. 思维题,找规律
【解题思路】
解法1:找规律
该题为:求n根木棍组成的无前导0的所有可能的数值中的最小数值
要想使最值数值最小,首先考虑让数字位数尽量少。朴素地想,每位数字使用的木棍越多,数字位数越少。一位数字最多使用7根木棍,摆成“8”。
我们可以考虑,将n根木棍不断摆出数字“8”,看最后剩下几根木棍,再做处理。
每次摆出数字“8”用7根木棍,最后剩下的木棍数量为n%7
如果n%7 != 0,那么也可以理解为还差x=7-n%7个木棍,就可以摆出每位都是8的数字。
已知构成每种数字的木棍数,以及距离摆成8还差几根木棍(7减去数字的木棍数)
表1:
| 数字 | 木棍数 | 距离摆成8还差几根木棍 |
|---|---|---|
| 0 | 6 | 1 |
| 1 | 2 | 5 |
| 2 | 5 | 2 |
| 3 | 5 | 2 |
| 4 | 4 | 3 |
| 5 | 5 | 2 |
| 6 | 6 | 1 |
| 7 | 3 | 4 |
| 8 | 7 | 0 |
| 9 | 6 | 1 |
根据上表可知,n根木棍可以摆出的数值最小的数字的位数为 d = ⌈ n / 7 ⌉ d = \lceil n/7 \rceil d=⌈n/7⌉
,n为1时无法摆成数字。
如果n是7的倍数,那么就可以摆出 n / 7 = ⌈ n / 7 ⌉ n/7=\lceil n/7 \rceil n/7=⌈n/7⌉位8
如果n不是7的倍数,那么看在 ⌈ n / 7 ⌉ \lceil n/7 \rceil ⌈n/7⌉位8中,去掉1~6根木棍后能否形成合法的无前导0的数字。
观察上表可知,1位"8"在去掉1~5根木棍后都可以剩下非0的数字。
如果需要去掉6根木棍
- 如果是1位8去掉6根木棍,也就是n=1的情况,这种情况无法构成数字。
- 如果是2位以上的8去掉6根木棍,那么可以第1位去掉1根,第2位去掉5根,可以得到合法的数字。
根据n%7的值分类讨论,假设数字总位数很大,看还差x根木棍就可以摆出 d d d位“8”时,如何在 d d d位“8”中取走x个木棍,可以使得剩下的木棍摆成的数值最小。总原则是:使高位数字尽可能小。
表2:
| n%7 | x=7-n%7 | 操作 |
|---|---|---|
| 0 | 无操作 | |
| 1 | 6 | 最高位拿走5根变为1,第2位拿走1根变为0 |
| 2 | 5 | 最高位拿走5根变为1 |
| 3 | 4 | 最高位拿走2根变为2,第2位拿走1根变为0,第3位拿走1根变为0 |
| 4 | 3 | 最高位拿走2根变为2,第2位拿走1根变为0 |
| 5 | 2 | 最高位拿走2根变为2 |
| 6 | 1 | 最高位拿走1根变为6 |
只要数字位数 d ≥ 3 d\ge 3 d≥3,都可以使用上述方法得到n根木棍摆出的最小数字。
对于数字位数 d ≤ 2 d\le 2 d≤2,也就是 1 ≤ n ≤ 14 1\le n\le 14 1≤n≤14的情况,可以手动枚举每种情况可以摆出的最小数字。总原则是:位数尽可能小。位数相同时,首位尽可能小。
表3:
| 木棍数量 | 摆出的最小数字 |
|---|---|
| 1 | -1(无法摆出数字) |
| 2 | 1 |
| 3 | 7 |
| 4 | 4 |
| 5 | 2 |
| 6 | 6 |
| 7 | 8 |
| 8 | 10 |
| 9 | 18 |
| 10 | 22 |
| 11 | 20 |
| 12 | 28 |
| 13 | 68 |
| 14 | 88 |
对于每组数据,先输入n,再求出数字位数 d = ⌈ n / 7 ⌉ d=\lceil n/7 \rceil d=⌈n/7⌉
代码中使用公式: ⌈ a b ⌉ = ⌊ a − 1 b ⌋ + 1 \lceil \frac{a}{b} \rceil=\lfloor \frac{a-1}{b} \rfloor+1 ⌈ba⌉=⌊ba−1⌋+1
- 如果数字位数 d ≤ 2 d\le 2 d≤2,则根据表3,直接通过木棍数量得出其可以构造出的最小数字。
- 如果数字位数 d ≥ 3 d\ge 3 d≥3,则根据
n%7的值以及表2,得到拼出的数字的前几位,后面的每位都是8。
【题解代码】
解法1:找规律
#include<bits/stdc++.h>
using namespace std;
#define N 100005
int minNum[20] = {0, -1 ,1 ,7 ,4 ,2 ,6 ,8 ,10 ,18 ,22 ,20 ,28 ,68 ,88};//minNum[i]:i根小木棍拼出有前导0的最小数字
int pn[7] = {0, 10, 1, 200, 20, 2, 6}, pd[7] = {0, 2, 1, 3, 2, 1, 1};//pn[i]:n%7==i时前几位摆出的数字 pd[i]:pn[i]的位数
int main()
{int t, n, d;cin >> t;while(t--){cin >> n;//木棍数 d = (n-1)/7+1;//拼成的数字的总位数 if(d <= 2)cout << minNum[n] << endl;//如果n为1,拼不成数字,会输出-1 else{if(n%7 > 0)//只要n不是7的倍数,则需要通过pn输出前几位 cout << pn[n%7];for(int i = 1; i <= d-pd[n%7]; ++i)//pn[n%7]有pd[n&7]位,还需要输出d-pd[n%7]位8 cout << 8;cout << endl;}} return 0;
}
相关文章:
信息学奥赛一本通 2113:【24CSPJ普及组】小木棍(sticks) | 洛谷 P11229 [CSP-J 2024] 小木棍
【题目链接】 ybt 2113:【24CSPJ普及组】小木棍(sticks) 洛谷 P11229 [CSP-J 2024] 小木棍 【题目考点】 1. 思维题,找规律 【解题思路】 解法1:找规律 该题为:求n根木棍组成的无前导0的所有可能的数…...
安装hami的笔记
k3s环境下安装hami提示如下错误: "failed to “StartContainer” for “kube-scheduler” with InvalidImageName: "Failed to apply default image tag “registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.31.2k3s1”: 没有Inva…...
【区块链】区块链密码学基础
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 区块链密码学基础引言一、哈希函数1.1 基本概念1.2 数学表达 二、非对称加密2.1…...
强化学习笔记(5)——PPO
PPO视频课程来源 首先理解采样期望的转换 变量x在p(x)分布下,函数f(x)的期望 等于f(x)乘以对应出现概率p(x)的累加 经过转换后变成 x在q(x)分布下,f(x)*p(x)/q(x) 的期望。 起因是:求最大化回报的期望,所以对ceta求梯度 具体举例…...
【C语言入门】解锁核心关键字的终极奥秘与实战应用(三)
目录 一、auto 1.1. 作用 1.2. 特性 1.3. 代码示例 二、register 2.1. 作用 2.2. 特性 2.3. 代码示例 三、static 3.1. 修饰局部变量 3.2. 修饰全局变量 3.3. 修饰函数 四、extern 4.1. 作用 4.2. 特性 4.3. 代码示例 五、volatile 5.1. 作用 5.2. 代码示例…...
寒假day10
第十天:请写出以下几个数据的类型 整数 a int a的地址 int* 存放a的数组b …...
本地部署与使用SenseVoice语音大模型简析
前言 SenseVoice 是一种语音基础模型,具有多种语音理解功能,包括自动语音识别 (ASR)、口语识别 (LID)、语音情感识别 (SER) 和音频事件检测 (AED)。本博客将指导您安装和使用 SenseVoice 模型,使其尽可能方便用户使用。 Github 仓库链接: ht…...
Kafka SASL/SCRAM介绍
文章目录 Kafka SASL/SCRAM介绍1. SASL/SCRAM 认证机制2. SASL/SCRAM 认证工作原理2.1 SCRAM 认证原理2.1.1 密码存储和加盐2.1.2 SCRAM 认证流程 2.2 SCRAM 认证的关键算法2.3 SCRAM 密码存储2.4 SCRAM 密码管理 3. 配置和使用 Kafka SASL/SCRAM3.1 Kafka 服务器端配置3.2 创建…...
中间件漏洞之CVE-2024-53677
目录 什么是struts?CVE-2024-53677简介影响版本复现环境搭建漏洞利用修复 什么是struts? 在早期的 Java Web 开发中,代码往往混乱不堪,难以维护和扩展。比如,一个简单的用户登录功能,可能在不同的 Java 类…...
pytorch基于 Transformer 预训练模型的方法实现词嵌入(tiansz/bert-base-chinese)
以下是一个完整的词嵌入(Word Embedding)示例代码,使用 modelscope 下载 tiansz/bert-base-chinese 模型,并通过 transformers 加载模型,获取中文句子的词嵌入。 from modelscope.hub.snapshot_download import snaps…...
Windows电脑本地部署运行DeepSeek R1大模型(基于Ollama和Chatbox)
文章目录 一、环境准备二、安装Ollama2.1 访问Ollama官方网站2.2 下载适用于Windows的安装包2.3 安装Ollama安装包2.4 指定Ollama安装目录2.5 指定Ollama的大模型的存储目录 三、选择DeepSeek R1模型四、下载并运行DeepSeek R1模型五、常见问题解答六、使用Chatbox进行交互6.1 …...
区间覆盖问题
文章目录 1. 题面2. 简单分析3. 代码解答4. TLE的2点可能 1. 题面 给定 N N N个区间 [ a i , b i ] [a_i,b_i] [ai,bi] 以及一个区间 [ s , t ] [s,t] [s,t],请你选择尽量少的区间,将指定区间完全覆盖。 输出最少区间数,如果无法完全…...
【LLM-agent】(task2)用llama-index搭建AI Agent
note LlamaIndex 实现 Agent 需要导入 ReActAgent 和 Function Tool,循环执行:推理、行动、观察、优化推理、重复进行。可以在 arize_phoenix 中看到 agent 的具体提示词,工具被装换成了提示词ReActAgent 使得业务自动向代码转换成为可能&am…...
SpringAI 人工智能
随着 AI 技术的不断发展,越来越多的企业开始将 AI 模型集成到其业务系统中,从而提升系统的智能化水平、自动化程度和用户体验。在此背景下,Spring AI 作为一个企业级 AI 框架,提供了丰富的工具和机制,可以帮助开发者将…...
【axios二次封装】
axios二次封装 安装封装使用 安装 pnpm add axios封装 // 进行axios二次封装:使用请求与响应拦截器 import axios from axios import { ElMessage } from element-plus//创建axios实例 const request axios.create({baseURL: import.meta.env.VITE_APP_BASE_API,…...
P7497 四方喝彩 Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an),有 m m m 个操作,分四种: add ( l , r , v ) \operatorname{add}(l,r,v) add(l,r,v):对于所有 i ∈ [ l , r ] i \in [l,r…...
深入剖析 Bitmap 数据结构:原理、应用与优化策略
深入理解 Bitmap 数据结构 一、引言 在计算机科学领域,数据的高效存储和快速处理一直是核心问题。随着数据量的不断增长,如何用最少的空间和最快的速度来表示和操作数据变得至关重要。Bitmap(位图)作为一种简洁而强大的数据结构…...
bypass hcaptcha、hcaptcha逆向
可以过steam,已支持并发,欢迎询问! 有事危,ProfessorLuoMing...
WebForms DataList 深入解析
WebForms DataList 深入解析 引言 在Web开发领域,控件是构建用户界面(UI)的核心组件。ASP.NET WebForms框架提供了丰富的控件,其中DataList控件是一个灵活且强大的数据绑定控件。本文将深入探讨WebForms DataList控件的功能、用法以及在实际开发中的应用。 DataList控件…...
C# List 列表综合运用实例⁓Hypak原始数据处理编程小结
C# List 列表综合运用实例⁓Hypak原始数据处理编程小结 1、一个数组解决很麻烦引出的问题1.1、RAW 文件尾部数据如下:1.2、自定义标头 ADD 或 DEL 的数据结构如下: 2、程序 C# 源代码的编写和剖析2.1、使用 ref 关键字,通过引用将参数传递,以…...
5分钟掌握Windows和Office激活:KMS_VL_ALL_AIO完整指南
5分钟掌握Windows和Office激活:KMS_VL_ALL_AIO完整指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为电脑上的Windows系统或Office软件提示"需要激活"而烦恼吗&am…...
Sora 2正式版能力边界全测绘(官方未公开的8项限制级参数首次披露)
更多请点击: https://intelliparadigm.com 第一章:Sora 2正式版核心能力全景概览 多模态时序理解与生成一体化 Sora 2正式版突破性地将文本、图像、音频及物理运动参数统一编码至共享时空潜空间,支持跨模态对齐的长程视频生成(最…...
AI驱动PDF智能生成:从LLM原理到工程实践
1. 项目概述:AI驱动的PDF文档智能构建引擎最近在开源社区里,我注意到一个名为NextFrontierBuilds/ai-pdf-builder的项目,它引起了我的浓厚兴趣。这个项目直指一个非常具体且高频的痛点:如何将非结构化的文本、数据,甚至…...
云原生架构师成长指南:从容器化到可观测性的实战体系
1. 项目概述:从代码到云端的架构师成长之路最近在技术社区里,一个名为“SKY-lv/cloud-architect”的项目仓库引起了我的注意。乍一看,这像是一个个人学习笔记或知识库,但深入探究后,我发现它远不止于此。它更像是一位资…...
从代码到知识图谱:构建交互式源码可视化分析工具
1. 项目概述:从“代码仓库”到“知识图谱”的跃迁在软件开发领域,我们每天都要面对海量的代码库。无论是为了复用轮子、学习最佳实践,还是为了理解一个庞大项目的架构,我们通常的做法是:克隆仓库、打开IDE、在文件和目…...
如何用waifu2x-caffe轻松实现4倍无损放大?一个免费AI图像增强的完整方案
如何用waifu2x-caffe轻松实现4倍无损放大?一个免费AI图像增强的完整方案 【免费下载链接】waifu2x-caffe waifu2xのCaffe版 项目地址: https://gitcode.com/gh_mirrors/wa/waifu2x-caffe 你是否曾经遇到过这样的困扰:收藏多年的老照片模糊不清&am…...
告别Hive慢查询:用Impala在CDH集群上实现秒级数据分析(实战避坑)
告别Hive慢查询:用Impala在CDH集群上实现秒级数据分析(实战避坑) 当你的Hive查询从30分钟降到3秒,数据工程师的幸福感会直接拉满。这不是理论上的性能优化,而是我们团队在CDH生产环境迁移Hive到Impala后的真实体验。如…...
PKSM:您的宝可梦全世代存档管家 - 从初代到第八代的完美数据管理方案
PKSM:您的宝可梦全世代存档管家 - 从初代到第八代的完美数据管理方案 【免费下载链接】PKSM Gen I to GenVIII save manager. 项目地址: https://gitcode.com/gh_mirrors/pk/PKSM 您是否曾因宝可梦存档意外损坏而痛失数百小时的游戏进度?是否在为…...
网盘直链解析工具:本地化下载解决方案完全指南
网盘直链解析工具:本地化下载解决方案完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / …...
Claude流水线资源开销暴增300%?用eBPF+Prometheus精准追踪LLM训练/推理任务混部下的CI资源泄漏链(附Grafana看板模板)
更多请点击: https://intelliparadigm.com 第一章:Claude流水线资源开销暴增300%?用eBPFPrometheus精准追踪LLM训练/推理任务混部下的CI资源泄漏链(附Grafana看板模板) 当Claude模型在Kubernetes集群中与CI流水线共享…...
