版权声明:哈哈哈哈哈哈哈哈哈哈哈哦吼~~ https://blog.csdn.net/threeh20/article/details/82927711
https://www.nowcoder.com/acm/contest/202/F
队友发现在层数到达d之前和d之后的答案规律不同。。。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[100];
int main()
{
int T;
ll n,d;
ll er[100];
er[0]=1;
for(int i=1;i<=62;i++)
er[i]=er[i-1]*2;
while(~scanf("%lld%lld",&n,&d))
{
if(n==1||d==0)
{
cout<<0<<endl;
continue;
}
if(d>=n)
{
cout<<er[n-1]-1<<endl;
continue;
}
for(ll i=1;i<=d;i++)
a[i]=i;
for(int i=d+1;i<=n-1-d;i++)
a[i]=a[i-1]+1+a[i-d-1];
printf("%lld\n",er[n-1]-1-a[n-d-1]);
}
return 0;
}