指数序列(map练习4)
提交数: 791, 通过率: 29.08%, 平均分: 54.56
题目描述:
伊凡在在纸上写下了一个由n个非负整数组成的序列a1,a2,a3,……,an。这个序列保证单调不降。
接着,伊凡又在纸上写下了另一个序列2a1,2a2,2a3,……,2an。现在他想知道,最小要在这个序列中添加多少个形式为2x的数(x为非负整数),才能使这个序列所有整数的和为2v-1,其中v为某个非负整数。
输入格式:
第1行包括1个正整数n(1<=n<=10^5)。
第2行包括n个由空格隔开的整数a1,a2,a3,……,an。其中,0<=ai<=2*10^9,保证a1<=a2<=a3……<=an。
输出格式:
输出一行一个整数,表示最少在序列中添加数的数量。
样例输入:
样例1: 4 0 1 1 1 样例2: 1 3
样例输出:
样例1: 0 样例2: 3
提示:
在第一个样例中不需要添加任何数,因为20+21+21+21=20+21+2*21=20+21+22=1+2+4=7=23-1。
在第二个样例中,需要至少添加3个数,分别为20,21,22。
建议使用map当hash表,方便解决问题。
时间限制: 500ms空间限制: 256MB