ABC208E
ABC208E
*2024
题意
求有多少个不大于
题解
如果把乘积换成和这题就纯数位 DP 入门题了,比较卡手的地方在于当前乘积是一定要被设计到状态里的,但是一方面乘积太大了不好存,另一方面这个过大的乘积会不会造成状态数过多导致效率问题?
答案是想多了。
实际上会出现的乘积相当有限(约
所以直接上 std::unordered_map
存状态就好了。设 std::unordered_map
存储。
代码
unordered_map<ll,ll>f[2][2][20];
ll n,k,lim[20];
ll dfs(bool z,bool p,ll x,ll mul){
if(!x){
if(mul<=k)return 1;
else return 0;
}
if(f[z][p][x].count(mul))return f[z][p][x][mul];
ll res=0;
for(ll i=0;i<=(p?lim[x]:9);i++){
if(z){
if(i==0)res+=dfs(z,p&&i==lim[x],x-1,mul);
else res+=dfs(0,p&&i==lim[x],x-1,i);
}
else {
res+=dfs(z,p&&i==lim[x],x-1,mul*i);
}
}
return f[z][p][x][mul]=res;
}
void solve(){
n=R,k=R;
ll tot=0;
while(n){
lim[++tot]=n%10;
n/=10;
}
we(dfs(1,1,tot,0)-1);
return ;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构