The 14th Jilin Provincial Collegiate Programming Contest Changchun University of Science and Technol

该问题要求通过简化相邻数字来缩短一个数字字符串。如果存在唯一最小值,字符串可缩短至1;否则,需要根据最小值数量和是否能被其他数字整除进行分类讨论,以找到新的最小值或确定缩短后的长度。
摘要由CSDN通过智能技术生成

Problem E. Shorten the Array

题意:
给你一个由n个数字组成的字符串(每个数字的范围为0~9),需要你将这个字符串尽可能的缩短,输出最后字符串的长度,已知两个相邻的数字可以化简成前者余后者的值或者后者余前者的值。

知识点
思维

题解:
我们都知道,一个较小的值mod较大的值会得到它本身,所以如果这个字符串种存在一个唯一的最小值,我们就能够通过这个最小值将其化简为最小值本身,也就是长度为1,此时显然得到了最短的字符串,但是,如果这个最小值的数目不唯一,问暖则需要进行进一步的分类讨论:因为一个较大的数mod一个较小数时,得到的数一定小于这个较小数(本题中较小值的倍数为较大值的情况例外),所以我们可以进行判断,若这个字符串存在多个最小值和不能整除最小值的数,我们便可以得到一个新的最小值使得字符串长度缩减为1,反之只能得到最小值数目除以二的长度(向上取整)。

代码:

#include <iostream>
#include <algorithm>

using namespace std;

int main() {
   
    ios::sync_with_stdio(false);
    cin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pale_B

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值