CF做题记录--2023.9.24

1409D. Decrease the Sum of Digits Problem - 1409D - Codeforces

给定一个数 n,将 n 加上一个数 k,使得和的数码和不大于 s,求 k 的最小值。

思路

首先考虑特殊情况,也就是一开始就成立,即各位总和cnt≤n

对于朴素情况,从左往右累加每位数,(对第i位)如果有cnt<n,那么一定可以实现

将第i位进1,后面清零,此时满足题目 

在考虑特殊情况,也就是临界位x为9,那么实际上将x或者x-1作为临界位的结果是一样的(9进1变0,上一位加1)那么我们可以直接掉过所有的9

1463B. Find The Array Problem - 1463B - Codeforces 

为您提供一个序列[a1​,a2​,...,an​],并且1≤ai​≤1^9。设S为这列数的和。我们定义一个美丽序列b:

1. 保证1≤bi​≤1^9(1≤i≤n)

2. 对于每一对相邻的数(bi​,bi+1​),要求bi​整除bi+1​或bi+1​整除bi​。

3. 2∗∑n​∣ai​−bi​∣≤S

你的任务就是找到任意一个美丽序列并且输出这个序列。

思路

看到2∗∑n​∣ai​−bi​∣≤S,两数列差值的两倍≤S,那么一个朴素想法是 1,a[i],1,a[i]....(也就是将a数组间隔的修改为1)实际考点就变为奇偶位之和

考虑能否实现,对于奇数/偶数位,s+=a[i]-1,那么理论上2*s一定可以小于等于S。

那么先计算奇偶位的和,将小的化为1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值