P11229 [CSP-J 2024] 小木棍

[CSP-J 2024] 小木棍

题目描述

小 S 喜欢收集小木棍。在收集了 n n n 根长度相等的小木棍之后,他闲来无事,便用它们拼起了数字。用小木棍拼每种数字的方法如下图所示。

现在小 S 希望拼出一个整数,满足如下条件:

  • 拼出这个数恰好使用 n n n 根小木棍;
  • 拼出的数没有前导 0 0 0
  • 在满足以上两个条件的前提下,这个数尽可能小。

小 S 想知道这个数是多少,可 n n n 很大,把木棍整理清楚就把小 S 折腾坏了,所以你需要帮他解决这个问题。如果不存在正整数满足以上条件,你需要输出 − 1 -1 1 进行报告。

输入格式

本题有多组测试数据。

输入的第一行包含一个正整数 T T T,表示数据组数。

接下来包含 T T T 组数据,每组数据的格式如下:

一行包含一个整数 n n n,表示木棍数。

输出格式

对于每组数据:输出一行,如果存在满足题意的正整数,输出这个数;否则输出 − 1 -1 1

样例 #1

样例输入 #1

5
1
2
3
6
18

样例输出 #1

-1
1
7
6
208

提示

【样例 1 解释】

  • 对于第一组测试数据,不存在任何一个正整数可以使用恰好一根小木棍摆出,故输出 − 1 -1 1
  • 对于第四组测试数据,注意 0 0 0 并不是一个满足要求的方案。摆出 9 9 9 41 41 41 以及 111 111 111 都恰好需要 6 6 6 根小木棍,但它们不是摆出的数最小的方案。
  • 对于第五组测试数据,摆出 208 208 208 需要 5 + 6 + 7 = 18 5 + 6 + 7 = 18 5+6+7=18 根小木棍。可以证明摆出任何一个小于 208 208 208 的正整数需要的小木棍数都不是 18 18 18。注意尽管拼出 006 006 006 也需要 18 18 18 根小木棍,但因为这个数有前导零,因此并不是一个满足要求的方案。

【数据范围】

对于所有测试数据,保证: 1 ≤ T ≤ 50 1 \leq T \leq 50 1T50 1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1n105

测试点编号 n ≤ n\leq n特殊性质
1 1 1 20 20 20
2 2 2 50 50 50
3 3 3 1 0 3 10^3 103A
4 , 5 4,5 4,5 1 0 5 10^5 105A
6 6 6 1 0 3 10^3 103B
7 , 8 7,8 7,8 1 0 5 10^5 105B
9 9 9 1 0 3 10^3 103
10 10 10 1 0 5 10^5 105

特殊性质 A:保证 n n n 7 7 7 的倍数且 n ≥ 100 n \geq 100 n100

特殊性质 B:保证存在整数 k k k 使得 n = 7 k + 1 n = 7k + 1 n=7k+1,且 n ≥ 100 n \geq 100 n100

【题目分析】

我们可以知道要拼成0到9这十个数字的火柴棒个数分别是6,2,5,5,4,5,6,3,7,6。
不难发现,组成8的小木棍个数最多,需要7根小木棍,结合题目中给到的特殊数据,可以得到如果小木棍的数量为7的倍数,尽量去拼数字8最好,如果拼其它的数字,我们所得到的数字位数较多,而题目中要求拼出的数字尽可能小。

【代码实现】

那么根据7的倍数和余数关系可以得到:

  1. 如果正好是7的倍数,那么所有的小木棍都去拼8,可以拼出n/7个8
  2. 如果n%7的结果是1,那么会存在两种情况,第一种情况是只有1根小木棍,无法拼出任何一个数字,所以输出-1;第二种情况是,在尽量去拼8的情况下,会多出8根小木棍,可以拼成10,那么可以输出10和(n-8)/7个8。
  3. 如果n%7的结果是2,那么可以先输出一个1,然后让剩下的小木棍都去拼8,后面输出(n-2)/7个8。
  4. 如果n%7的结果是3,那么存在3种情况,第一种是小木棍的数量为3,那么输出7即可,第二种是小木棍的数量是10,那么可以输出22。第三种是小木棍的数量为17或者17以上的满足条件的数,可以先输出200,然后剩余的木棍拼8,输出(n-17)/7个8。
  5. 如果n%7的结果是4,那么存在两种情况,第一种是小木棍的数量为4,那么输出4即可,第二种是小木棍的数量为11或者11以上,那么可以先输出20,然后输出(n-11)/7个8。
  6. 如果n%7的结果是5,那么可以先输出一个2,然后剩余的木棍可以拼成(n-5)/7个8。
  7. 如果n%7的结果是6,那么可以先输出一个6,然后剩余的木棍可以拼成(n-6)/7个8。
#include<bits/stdc++.h>
using namespace std;
long long n, t;
int main() {cin >> t;while (t--) {cin >> n;int m = n % 7;if (m == 0) {for (int i = 1; i <= n / 7; i++)cout << 8;cout << endl;continue;}if (m == 1) {if (n == 1)cout << -1 << endl;else {cout << 10;for (int i = 1; i <= n / 7 - 1; i++)cout << 8;cout << endl;}continue;}if (m == 2) {cout << 1;for (int i = 1; i <= n / 7; i++)cout << 8;cout << endl;continue;}if (m == 3) {if (n == 3)cout << 7 << endl;else if (n == 10)cout << 22 << endl;else {cout << 200;for (int i = 1; i <= (n - 17) / 7; i++)cout << 8;cout << endl;}continue;}if (m == 4) {if (n == 4)cout << 4 << endl;else {cout << 20;for (int i = 1; i <= (n - 11) / 7; i++)cout << 8;cout << endl;}continue;}if (m == 5) {cout << 2;for (int i = 1; i <= (n - 5) / 7; i++)cout << 8;cout << endl;continue;}if (m == 6) {cout << 6;for (int i = 1; i <= (n - 6) / 7; i++)cout << 8;cout << endl;continue;}}return 0;
}

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

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

相关文章

嵌入式开发之进程函数

1、进程创建-fork #include <unistd.h> pid_t fork(void); 创建新的进程&#xff0c;失败时返回-1成功时父进程返回子进程的进程号&#xff0c;子进程返回0通过fork的返回值区分父进程和子进程 pid_t pid; //fork子进程之后&#xff0c;子进程和父进程会同时继续往下执行…

Axios 的 responseType 属性详解及 Blob 与 ArrayBuffer 解析

在前端开发的广阔天地中&#xff0c;Axios 犹如一颗璀璨的明星&#xff0c;为我们与服务器之间的通信搭建起坚实的桥梁。其中&#xff0c;responseType 属性更是赋予了我们灵活处理服务器响应的强大能力。 一、Axios 的 responseType 属性值及示例 1.arraybuffer 当我们将 r…

在PHP中使用UTF-8编码防止乱码需要注意以下几点‌:

在PHP中使用UTF-8编码防止乱码需要注意以下几点‌&#xff1a; ‌设置PHP文档编码为UTF-8‌&#xff1a;在PHP代码的最开始使用header()函数设置文档的编码为UTF-8。例如&#xff1a;header("Content-Type: text/html; charsetutf-8");‌12。 ‌确保文件编码为UTF-8…

【python GUI编码入门-19】Tkinter事件处理:按钮点击与响应

哈喽,大家好,我是木头左! 本文将深入探讨Tkinter中的事件处理机制,特别是如何响应按钮点击事件。将从基础开始,逐步深入了解,最终让你能够熟练地处理按钮点击事件,并构建复杂的应用程序。 为什么需要事件处理? 在GUI应用程序中,事件处理是核心部分。用户与应用程序的…

【循环引用及格式化输出】

垃圾回收机制 当一个值在内存中直接引用跟间接引用的量为0时&#xff0c;&#xff08;即这个值没有任何入口可以找到它&#xff09;那么这个值就会被清空回收♻️&#xff0c;释放内存空间&#xff1b; 列表在内存中的存储方式 1&#xff09;引用计数的两种方式 x "ea…

从0开始学习Linux——文本编辑器

往期目录&#xff1a; 1、从0开始学习Linux——Linux简介&安装 2、从0开始学习Linux——搭建属于自己的Linux系统 我们通过前面教程的学习已经了解了什么是Linux&#xff0c;并且我们也定制安装了属于我们自己的一个Linux系统。从这个章节开始我们将开始学习如何去操作Linu…

“北斗三号”如何赋能工业物联网

北斗三号是我国独立自主研发的第三代卫星导航系统&#xff0c;是北斗卫星导航系统的重要组成部分。北斗三号系统具有全球覆盖能力&#xff0c;除了提供基本的定位、导航、授时服务外&#xff0c;还提供高精度和短报文通信服务等。针对产业物联网应用&#xff0c;北斗三号也发挥…

相关衍生 pika+mongo

衍生相关 pikamongo 很多平台不提供完整的数据展示, 翻页只能翻几页,不过提供相关推荐等方法可获取更多的数据; 使用 rabbitmq 是因为数据量可能有几十上百万, 且能持久化 mongo对于数据并不实时的更新到查询里 def main():# mongodb# client MongoClient(localhost, 27017)cl…

Odoo | 免费开源ERP:汽车及零配件行业信息化解决方案

文 / 开源智造 Odoo亚太金牌服务 概述 围绕汽车行业产业链上下游企业的整体业务主线&#xff0c;提供面向汽车主机厂整车个性化制造解决方案&#xff0c;产业链上下游一体化协同解决方案&#xff0c;数字化精益制造解决方案、全价值链质量管理解决方案&#xff0c;数字化运营解…

【Linux】【守护进程】总结整理

守护进程&#xff08;Daemon&#xff09;是运行在后台的进程&#xff0c;通常没有与之关联的控制终端。守护进程在启动后会脱离控制终端&#xff0c;并继续在后台运行&#xff0c;即使用户退出登录或者终端关闭也不会影响它们的运行。守护进程常用于提供网络服务、定期执行任务…

Spring Cloud微服务:构建弹性、可扩展的分布式系统

Spring Cloud微服务&#xff1a;构建弹性、可扩展的分布式系统 在当今的软件开发领域&#xff0c;微服务架构已经成为构建复杂应用的首选方案。微服务架构通过将应用拆分为多个独立的服务&#xff0c;每个服务专注于单一的业务功能&#xff0c;从而提高了系统的可维护性、可扩…

vue中html如何转成pdf下载,pdf转base64,忽略某个元素渲染在pdf中,方法封装

一、下载 html2Canvas jspdf npm install jspdf html2canvas二、封装转换下载方法 htmlToPdf.js import html2Canvas from html2canvas import JsPDF from jspdf/*** param {*} reportName 下载时候的标题* param {*} isDownload 是否下载默认为下载&#xff0c;传false不…

Docker配置及简单应用

谈论/理解 Docker 的常用核心部分&#xff0c;以下皆在 Ubuntu 操作系统下进行 1 国内源安装 Docker-ce 1.1 配置 Linux 内核流量转发 因为docker和宿主机的端口映射&#xff0c;本质是内核的流量转发功能&#xff0c;所以要对其进行配置 1.1.1 未配置流量转发 如果没有配置流…

火山引擎云服务docker 安装

安装 Docker 登录云服务器。 执行以下命令&#xff0c;添加 yum 源。 yum update -y yum install epel-release -y yum clean all yum list依次执行以下命令&#xff0c;添加Docker CE镜像源。更多操作请参考Docker CE镜像。 # 安装必要的一些系统工具 sudo yum install -y yu…

探索数据科学与大数据技术专业本科生的广阔就业前景

随着信息技术的不断发展&#xff0c;数据科学与大数据技术已经成为各大行业的关键推动力。在这样一个数据驱动的时代&#xff0c;越来越多的企业依赖数据来驱动决策、优化运营和创造价值。因此&#xff0c;数据科学与大数据技术专业的本科生在就业市场上具有广阔的前景和多样的…

CSS例子: 横向排列的格子

效果 HTML <view class"content"><view class"item" v-for"item of 5">{{item}}</view></view> CSS .content {height: 100vh;display: flex;flex-direction: row; flex-wrap: wrap;align-content: flex-start;backgro…

智能家居的未来:AI让生活更智能还是更复杂?

内容概要 智能家居的概念源于将各种家居设备连接到互联网&#xff0c;并通过智能技术进行控制和管理。随着人工智能的迅速发展&#xff0c;这一领域也迎来了前所未有的机遇。从早期简单的遥控器到如今可以通过手机应用、语音助手甚至是环境感应进行操作的设备&#xff0c;智能…

ios打包文件上传App Store windows工具

在苹果开发者中心上架IOS APP的时候&#xff0c;在苹果开发者中心不能直接上传打包文件&#xff0c;需要下载mac的xcode这些工具进行上传&#xff0c;但这些工具无法安装在windows或linux电脑上。 这里&#xff0c;我们可以不用xcode这些工具来上传&#xff0c;可以用国内的香…

ArkTS中的组件基础、状态管理、样式处理、class语法以及界面渲染

一、组件基础 1.什么是ArkTS ArkTS是HarmoyOS优选的助力应用开发的语言&#xff0c;ArkTS围绕应用开发在TypeScript&#xff08;简称TS&#xff09;生态基础上做了进一步的扩展&#xff0c;继承了TS所有的特性&#xff0c;是TS的超集。 扩展的能力如下&#xff1a; 基本语法 …

连接kafka消息队列报org.apache.kafka.clients.NetworkClient异常

启动kafka后&#xff0c;连接kafka消息队列报org.apache.kafka.clients.NetworkClient异常 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient) 检查kafka运行日志&#xff0c;报The broker is trying to join the wrong clu…