模拟。
在计算2^n时如果已经超过m则跳出并输出m。
否则就输出m % 2^n。这样就不会爆了。
#include <cstdio>
using namespace std;
int main()
{
int n,m;
scanf("%d",&n);
scanf("%d",&m);
int fac=1,k=0;
for(int i=1;i<=n;i++){fac*=2;if(fac>m){k=i;break;}}
if(!k) printf("%d\n",m % fac);else printf("%d\n",m);
return 0;
}