卡在80分过不去
#include<bits/stdc++.h>
using namespace std;
int n,i,na,nb,s;
bool f[505][505];
namespace IO{
char ibuf[(1<<20)+1],*iS,*iT;
#if ONLINE_JUDGE
#define gh() (iS==iT?iT=(iS=ibuf)+fread(ibuf,1,(1<<20)+1,stdin),(iS==iT?EOF:*iS++):*iS++)
#else
#define gh() getchar()
#endif
#define reg register
inline long long read(){
reg char ch=gh();
reg long long x=0;
reg char t=0;
while(ch<'0'||ch>'9') t|=ch=='-',ch=gh();
while(ch>='0'&&ch<='9') x=x*10+(ch^48),ch=gh();
return t?-x:x;
}
}
using IO::read;
void write(int x) {
if(x<0){
putchar('-');
write(-x);
return;
}
if(x>=10)write(x/10);
putchar(x%10+'0');
}
void dfs(int k)
{
int i,j,a=0;
if(k>n){
for(i=n;i>1;i--)
for(j=1;j<=i;j++)
if(f[i][j]==f[i][j+1])f[i-1][j]=0;
else f[i-1][j]=1;
for(i=1;i<=n&&a<=na;i++)
for(j=1;j<=i;j++)
a+=(!f[i][j]);
if(a==na)s++;
return;
}
f[n][k]=1;
dfs(k+1);
f[n][k]=0;
dfs(k+1);
}
int main()
{
na=read(),nb=read();
n=na+nb;
while(n){
n-=i;
i++;
}
n=i-1;
dfs(1);
write(s);
return 0;
}