刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

数学实验

时间限制: 1000MS

内存限制: 262144KB

题目描述:

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

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

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```#include #include #include using namespace std;int main() int N;cin >> N;vector nums(N);for (int i = 0; i < N; i++) {cin >> nums[i];}int maxNum = 1;for (int i = 1; i < N; i++) {if (nums[i] == nums[i-1]) {nums[i-1] += 1;} else {maxNum = max(maxNum, nums[i]);}}cout << maxNum << endl;return 0;```

解析:

【喵呜刷题小喵解析】:

该题目要求的是对给定的正整数数列进行操作,找到两个相邻且相同的数,然后删掉其中一个数,剩下的一个数加1,重复执行此操作,直到无法继续为止,最后输出得到的最大数。

我们可以使用C++编写程序来解决这个问题。首先,我们需要读取输入的正整数数列,然后遍历数列,找到两个相邻且相同的数,然后执行操作,将其中一个数加1,并更新最大数。最后,输出最大数即可。

在程序中,我们使用vector来存储输入的数列,使用max函数来更新最大数。在遍历数列时,我们只需要遍历到倒数第二个数,因为最后一个数无法与前面的数形成相邻且相同的数对。

注意,我们需要使用if语句来判断当前数是否与前一个数相同,如果相同,则执行操作,否则更新最大数。最后,输出最大数即可。
创作类型:
原创

本文链接:数学实验 时间限制: 1000MS 内存限制: 262144KB 题目描述: 老师在黑板上写出了一个

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share