【题目】http://codeforces.com/gym/101466/problem/B
【题意】给出一个序列,每个数代表树的某一层的一个节点有多少儿子,问这棵树最多有多少个节点?
【思路】当然是选择原谅把最大的放在上面就能达到最大啊
【代码】
#include<bits/stdc++.h>
#define fuck(x) std::cout<<"["<<#x<<"->"<<x<<"]"<<endl;
using namespace std;
typedef long long ll;
const int M=1e6+5;
bool cmp(ll a,ll b)
{
return a>b;
}
int main()
{
int n;
scanf("%d",&n);
ll a[40];
for(int i=0;i<n;i++)
{
scanf("%I64d",&a[i]);
}
sort(a,a+n,cmp);//大的放前面
ll sum=1ll;
ll temp=1;
for(int i=0;i<n;i++)
{
temp*=a[i];//每层新增的总个数就是上一层总个数*上一层有多少个son
sum+=temp;
}
printf("%I64d\n",sum);
}