题面传送门
发现这道题主要不是思维难,而是高精难打。还难卡常
\(2i\)的显然很好处理,考虑\(2i+1\)怎么做
首先设两个分支为\(2k-1,2k\),那么会衍生出三个分支\(k-1,k,k\)容易发现仍然只有两个本质不同。
那么只要暴力递归下去判个重即可。
但是问题是这样\(O(Tlog^3n)\)过不去。
考虑化简一下不用map,直接递推即可。时间复杂度\(O(Tlog^2n)\)
高精要压位才能过去。
代码实现:
//高精就不贴了
int main() {
freopen("1.in","r",stdin);
scanf("%d",&t);
while(t--){
cin>>a;r=e;l=d;
while(a!=0){
//cout<<a<<endl;
if(a%c==d) r+=l;
else l+=r;
a/=c;
}
cout<<r<<endl;
}
}