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