当前位置: 首页 > news >正文

技术网站网络推广公司名字

技术网站,网络推广公司名字,手表网站哪个好,焦作网站建设的公司哪家好【题目链接】 ybt 2113:【24CSPJ普及组】小木棍(sticks) 洛谷 P11229 [CSP-J 2024] 小木棍 【题目考点】 1. 思维题,找规律 【解题思路】 解法1:找规律 该题为:求n根木棍组成的无前导0的所有可能的数…

【题目链接】

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还差几根木棍
061
125
252
352
443
552
661
734
870
961

根据上表可知,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%7x=7-n%7操作
0无操作
16最高位拿走5根变为1,第2位拿走1根变为0
25最高位拿走5根变为1
34最高位拿走2根变为2,第2位拿走1根变为0,第3位拿走1根变为0
43最高位拿走2根变为2,第2位拿走1根变为0
52最高位拿走2根变为2
61最高位拿走1根变为6

只要数字位数 d ≥ 3 d\ge 3 d3,都可以使用上述方法得到n根木棍摆出的最小数字。
对于数字位数 d ≤ 2 d\le 2 d2,也就是 1 ≤ n ≤ 14 1\le n\le 14 1n14的情况,可以手动枚举每种情况可以摆出的最小数字。总原则是:位数尽可能小。位数相同时,首位尽可能小。

表3:
木棍数量摆出的最小数字
1-1(无法摆出数字)
21
37
44
52
66
78
810
918
1022
1120
1228
1368
1488

对于每组数据,先输入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=ba1+1

  • 如果数字位数 d ≤ 2 d\le 2 d2,则根据表3,直接通过木棍数量得出其可以构造出的最小数字。
  • 如果数字位数 d ≥ 3 d\ge 3 d3,则根据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;
}
http://www.yayakq.cn/news/295532/

相关文章:

  • 临海企业网站建设公司广州手机软件开发制作
  • 如何建立自己的网站去推广有赞分销平台
  • WordPress建站步骤免费申请无限流量卡
  • 河北网站建设工程wordpress自己新建模板
  • 可以做夫妻的游戏视频网站wordpress首页获取文章的图片
  • 家具网站建设策划书企业所得税怎么征收几个点
  • 滨州建网站尚硅谷python基础教程
  • 门店管理网站建设乐清网站建设推广
  • 顺德乐从有做阿里巴巴的网站吗编程如何自学
  • 国家建设工程网官方网站ps网页设计尺寸规范
  • 北京建设网站有哪些公司网站开发手机销售网站用例图
  • 网站开发过程的基本环节益阳中国网
  • 哪个网站专做进口商品的东莞免费做网站公司
  • 网站建设价格为何相差甚大施工企业施工生产计划
  • 公司网站建设怎么弄如何做一个企业的网站
  • 毕设做网站答辩一般问什么做门票的网站
  • 网站建设功能需求海外加速器
  • 上海网站建设与设计公司百度网站排名搜行者seo
  • 深圳wap网站建设wordpress 返回
  • 公司网站开发立项文档wordpress卡在 wp
  • 百度搜不到自己的网站目前最新推广平台
  • 无锡做百度网站培训机构seo
  • 吉林省建设厅网站评职称系统购物帮做特惠的网站
  • 下载网站系统旅游网站建设市场分析
  • 临沂手机建站模板wordpress 4.4.1 中文
  • 做二手房的端口网站计算机应用技术是学什么
  • 做网站的图哪来wordpress注册不发邮件
  • 4399网站开发者珠海正规网站制作系统
  • 网站 建设广州网站制
  • 网站怎么做网站收录汽车网站建设公司