RT https://www.luogu.com.cn/problem/U129453 第五个样例没过,输出2097152 但是却AC了 https://www.luogu.com.cn/record/39302784 求大佬们看看哪里有问题
#include<bits/stdc++.h>
using namespace std;
long long n,k,ans;
map<long long,long long> tmp;
long long dfs(long long length){
int size=tmp.size();
tmp.insert(pair<long long,long long>(length,1));
if(tmp.size()==size){
return tmp.find(length)->second;
}else{
tmp.erase(length);
if(length<2*k+2){
return 1;
}else{
long long k=dfs(ceil(length/2))+dfs(length-ceil(length/2));
tmp.insert(pair<long long,long long>(length,k));
return k;
}
}
}
int main(){
scanf("%ld %ld", &n, &k);
if(k==0){
printf("%ld",n);
return 0;
}
ans=dfs(n);
printf("%ld",ans);
return 0;
}