蓝桥杯C++国赛 数学实验:求数列按规则合并后可得到的最大数

cg540492 程序题 共 个子题

题目描述

老师在黑板上写出了一个正整数数列,让所有同学都来做一个数学实验,要求如下:

  1. 这组数总共不超过500000个,每个数的大小范围在1~80之间;
  2. 要从这组数中找出两个相邻且相同的数,删掉其中一个数,剩下的一个数加1(例如:两个相邻的6,变成一个7);
  3. 重复执行第2步;
  4. 当操作无法继续进行时,实验结束,此时,实验结果就是这组数里面最大的数。

注意:不同的实验方案得到的最大数不同。

现在给定了一个正整数数列,请你编写程序计算出能够得到的实验结果最大是多少?

例如: 当N=6,这个正整数数列是 1、2、2、2、3、4时,得到最大数的方法如下: 先将后面两个2变成一个3,然后3和3变成4,最后4和4变成5。可以证明,没有其它更好的方案,故输出5。

输入描述

第一行输入一个正整数N(1≤N≤500000) 第二行输入N个正整数(1≤正整数≤80),相邻两个数之间用一个空格隔开。

输出描述

输出一个正整数,表示实验结束后能够得到的最大的实验结果。

样例输入

6
1 2 2 2 3 4

样例输出

5

本题为编程题,提交代码并运行通过测试点后判分。

正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
提交记录
共 条 仅展示自由练习提交
正在加载提交记录…
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧