众所周知,今天是高考的第二天,正所谓“月儿弯弯照九州,几家欢喜几家愁”。而高考志愿填报更是抉择的时候,其中每年的高考的志愿填报都是使用的 1、2、4、8 来表示数字,如要填涂 7 则选择 1、2、4 三个数字, Pray2018 作为 1‰的数学爱好者,他决定研究这一问题, 即, 给出 n 个互不相同的正整数, 记为 s[i] , 每个正整数只能使用一次,求这 n 个数 不能组合得到的最小值。
第一行是一个正整数 n,表示正整数的个数。
接下来的 n 行每行一个正整数。
一个正整数,表示这 n 个数 不能组合得到的最小值。
4
1
2
4
8
16
【数据规模 与约定】
对于 30%的数据,n<=500,s[i]<=1000;
对于 70%的数据,n<=1000,s[i]<=10000;
对于 100%的数据,n<=100000,s[i]<=100000。
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,a[100005];
long long ans;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
sort(a+1,a+n+1);
for(int i=1;i<=n;++i)
{
if(a[i]<=ans+1) ans+=a[i];
else break;
}
printf("%d\n",ans+1);
return 0;
}
原文:https://www.cnblogs.com/wuwendongxi/p/13372824.html