首页 > 其他分享 >About [CSP-J 2024] 小木棍

About [CSP-J 2024] 小木棍

时间:2024-11-23 11:03:25浏览次数:13  
标签:About 需要 正整数 数字 根小 木棒 2024 木棍 CSP

题目描述

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

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

  • 拼出这个数恰好使用n根小木棍;

  • 拼出的数没有前导0;

  • 在满足以上两个条件的前提下,这个数尽可能小。

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

输入格式

本题有多组测试数据。

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

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

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

输出格式

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

输入 #1

5

1

2

3

6

18

输出 #1

-1

1

7

6

208

【样例 1 解释】

  • 对于第一组测试数据,不存在任何一个正整数可以使用恰好一根小木棍摆出,故输出 −1−1。

  • 对于第四组测试数据,注意0并不是一个满足要求的方案。摆出9、41以及111都恰好需要6根小木棍,但它们不是摆出的数最小的方案。

  • 对于第五组测试数据,摆出208需要5+6+7=185+6+7=18根小木棍。可以证明摆出任何一个小于208的正整数需要的小木棍数都不是18。注意尽管拼出006也需要18根小木棍,但因为这个数有前导零,因此并不是一个满足要求的方案。

【数据范围】

对于所有测试数据,保证:1≤T≤501≤T≤50,1≤n≤1051≤n≤105。

测试点编号

n≤n

特殊性质

1

20

2

50

3

103

A

4,,5

1000005

A

6

1000

B

7,8

1000005

B

9

1000

10

100000

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

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

首先我们来解析一下题目

小 S 希望拼出一个整数

我们已知:

拼数字0,需要6根小木棒;拼数字1,需要2根小木棒

拼数字2,需要5根小木棒;拼数字3,需要5根小木棒

拼数字4,需要4根小木棒;拼数字5,需要5根小木棒

拼数字6,需要6根小木棒;拼数字7,需要3根小木棒

拼数字8,需要7根小木棒;拼数字9,需要6根小木棒

那么我们需要一个数组来存储木棍棒数

紧接着我们来看特殊性质A:保证n是7的倍数且n≥100

这段代码写出来我们就有了30分

代码如下:

我们再来看测试样例1

n<=20

数据不大,用模拟法就可以解决

OK

不多说了

接下来看特殊性质 B

保证存在整数k使得n=7k+1n=7k+1,且n≥100

这个性质说明了说明呢?

不难理解

总结

该程序通过对火柴棒数量进行条件判断,生成一个符合条件的数字输出。

它利用了火柴棒构成数字的特性,尤其是数字1和8的构成方式。

代码中也包含了一部分用于调试或预处理的逻辑,但在实际运行时并不会启用。

注意事项

代码中存在一些潜在的无限循环风险,如未能找到满足条件的 m[i] 值时可能导致无限循环。

此外,for循环中的i变量没有定义,可能会导致编译错误。应在适当的位置声明int  i;

                                        OK the end

标签:About,需要,正整数,数字,根小,木棒,2024,木棍,CSP
From: https://blog.csdn.net/GHX54188/article/details/143984082

相关文章

  • About[CSP-J 2024]扑克牌
    题目描述小P从同学小Q那儿借来一副n张牌的扑克牌。本题中我们不考虑大小王,此时每张牌具有两个属性:花色和点数。花色共有4种:方片、草花、红桃和黑桃。点数共有13种,从小到大分别为A23456789TJQK。注意:点数10在本题中记为T。我们称一副扑克牌是完整的,当且仅当对于每一种花......
  • About函数大杂烩
    函数在C++编辑中可以给我们许多便利具体如下:首先是我们熟知的main输出n个*接下来就是用函数来输出n个*特别备注:void是不带返回值的例如;我点一分外卖,不光要付钱还要叫外卖员给我送外卖,这就是带返回值的函数但是void好比如老师叫你擦黑板,不用把黑板搬给老师看,擦完就好......
  • 2024最火的资源牛知识付费系统小程序+PC+H5三端数据互通支持采集资源开源版
    下载:https://pan.baidu.com/s/19oircaQvJeE_nsX_jtjsBw?pwd=8888 .搭建:服务器配置1h2g以上均可使用运行环境php7.2sql5.6把防跨站点开1、在宝塔新建个站点,php版本使用7.2,将“后端”文件夹里的文件上传到站点根目录,运行目录设置为/public,安装好SSL证书,......
  • 2024赣ctf-web -wp
    1.你到底多想要flag???首先来解决第一关:先了解一下stripos();并且此函数处理数组返回false。而且pre_match同样遇见数组是返回false(解释一下正则i:这是正则表达式的修饰符,代表“不区分大小写”,意味着“FLAG”、“Flag”等大小写形式都会被匹配。s:这是正则表达式的修饰符,代表......
  • 浏览器指纹修改指南2024 - 分析Geolocation API实现(十)
    在geolocation.h文件中,可以找到一个私有成员Member<GeoNotifierSet>one_shots_;Member<GeolocationWatchers>watchers_;//GeoNotifiersthatareinthemiddleofinvocation.////|HandleError(error)|and|MakeSuccessCallbacks|needtoclear|one_sho......
  • 堪称2024最强Java八股文面试题汇总
    1.Java的基本数据类型有哪些?答:Java的基本数据类型包括:整型:byte, short, int, long浮点型:float, double字符型:char布尔型:boolean2.Java中的变量作用域有哪些?答:Java中的变量作用域主要有:类变量(静态变量):作用域为整个类,可以在类的任何地方访问。实例变量:作用域为类的非......
  • 深入浅出:SpringBoot启动流程源码分析(持续更新中......)最新日期:2024年10月29日
    Hello,大家好,我是此林。今天来深入底层讲一讲SpringBoot是如何启动的,也就是我们单击运行SpringBoot启动类,它底层发生了什么?SpringBoot启动类很简单,只有一行代码。我们点进run()方法。我们发现,它底层其实进行了两步操作。第一步是new出一个SpringApplication对象,第二个是......
  • 2024年最新互联网大厂精选 Java 面试真题集锦(JVM、多线程、MQ、MyBatis、MySQL、Redis
    前言春招,秋招,社招,我们Java程序员的面试之路,是挺难的,过了HR,还得被技术面,在去各个厂面试的时候,经常是通宵睡不着觉,头发都脱了一大把,还好最终侥幸能够入职一个独角兽公司,安稳从事喜欢的工作至今...近期也算是抽取出大部分休息的时间,为大家准备了一份通往大厂面试的小捷径,准备......
  • 2024高等代数【南昌大学】
    已知f(x)=1+x+x2+⋯+xn−1f(x)=1+x+x^2+\cdots+x^{n-1}f(x)=1+x+x2+⋯+xn−1,证明:f(x)∣[f(x)+xn]2−xnf(x)\mid\left[f(x)+x^n\right]^2-x^nf(x)∣[f(x)+xn]2−xn。xf(x)=x+x2+x3+⋯+xnxf......
  • 高级java每日一道面试题-2024年10月24日-JVM篇-说一下JVM有哪些垃圾回收器?
    如果有遗漏,评论区告诉我进行补充面试官:说一下JVM有哪些垃圾回收器?我回答:1.Serial收集器特点:Serial收集器是最古老、最稳定的收集器,它使用单个线程进行垃圾收集工作。在进行垃圾回收时,它会暂停所有用户线程,即StopTheWorld(STW)。单线程工作,适合单核CPU。在年......