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≤。设S为这列数的和。我们定义一个美丽序列b:
1. 保证1≤bi≤(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。