博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URAL 1057 Amount of Degrees 数位DP
阅读量:5494 次
发布时间:2019-06-16

本文共 1069 字,大约阅读时间需要 3 分钟。

水题,随便统计一下就好

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long LL;const int maxn = 100;int lim[maxn],B,K,len;int f[maxn][maxn];void getlim(int num) { len = 0; memset(lim,0,sizeof(lim)); while(num) { lim[len++] = num % B; num /= B; }}int dfs(int now,int cnt,int bound) { if(now == 0) { return cnt == K; } int ret = 0,m = bound ? lim[now - 1] : 1; int &note = f[now][cnt]; if(!bound && note != -1) return note; for(int i = 0;i <= m;i++) { if(i == 0) ret += dfs(now - 1,cnt,bound && i == m); else if(i == 1) { if(cnt == K) continue; ret += dfs(now - 1,cnt + 1,bound && i == m); } } if(!bound) note = ret; return ret;}int solve(int num) { getlim(num); memset(f,-1,sizeof(f)); return dfs(len,0,1);}int main() { int X,Y; cin >> X >> Y >> K >> B; cout << solve(Y) - solve(X - 1) << endl; return 0;}

  

转载于:https://www.cnblogs.com/rolight/p/3892330.html

你可能感兴趣的文章
技术工作者上升到思想,哲学层面也许更好
查看>>
LCD12864使用总结
查看>>
wireshark简明教程
查看>>
EditPlus配置Java编译器
查看>>
app已损坏,打不开。你应该将它移到废纸篓
查看>>
Switchover and Failover说明
查看>>
linux 环境RPM 安装MYSQL5.6
查看>>
Linux文件管理和编辑常用命令
查看>>
bluz-5.47 蓝牙
查看>>
C++ 读写文件
查看>>
海外旅游最常用的100句英语口语
查看>>
http协议进阶(五)连接管理
查看>>
服务器创建好后怎样使用远程连接工具链接的一些问题
查看>>
插件~NuGet与packages管理项目的包包
查看>>
笔试算法题(34):从数字序列中寻找仅出现一次的数字 & 最大公约数(GCD)问题...
查看>>
JS基本功 | JavaScript专题之数组 - 方法总结
查看>>
matlab数字图像处理函数,MATLAB数字图像处理学习(二)|常用函数
查看>>
错误请联系管理员文件 index.php,帝国CMS订单、反馈信息、投稿与留言发邮件通知管理员的方法...
查看>>
小米笔记本装linux教程视频教程,Archlinux安装指南~小米笔记本Air 13.3英寸版本
查看>>
linux卸载nomachine,NoMachine 安装与配置及使用
查看>>