题目描述
圣诞节本节,阿杰决定在自己的聚会上制作一个多维汉堡。
对于一个 L 级汉堡:0级汉堡是肉,L汉堡 (L≥1) 由方包,(L−1) 级汉堡,肉饼,(L−1) 级汉堡和另一个方包,从底部开始按此顺序垂直堆叠而成。
例如:一级汉堡和二级汉堡看起来像 01110 和0011101011100(旋转 90 度),其中 0 代表方包, 1 代表肉饼。
阿杰将制作的汉堡为 N级汉堡包,从这个汉堡的底部往上吃共 X 层(一层是肉饼或方包)。
请问他能吃到多少快肉饼?
输入格式
两个正整数,N 和 X 。
输出格式
一个正整数,代表阿杰能吃到的馅饼数量。
样例输入
2 7
样例输出
4
数据范围
对于 100% 的数据:0<L 1≤N≤50,X 小于总层数 。
下面是我的代码,主要是不知道怎么把总汉堡样子(a)给弄出来
#include<bits/stdc++.h>
using namespace std;
long long a;
int x,n,sum=1;
int tongji(int a){
int cnt=0;
while(a>0){
a/=10;
cnt++;
}
return cnt;
}
long long hb(int n){
if(n==1){
//printf("01110");
a+=01110*pow(10,sum);
sum+=6;
}
else{
hb(n-1);
a+=1*pow(10,tongji(hb(n-1))+1);
hb(n-1);
}
return a;
}
int main(){
scanf("%d",&x);
printf("%lld",hb(x));
return 0;
}