博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu3709
阅读量:6424 次
发布时间:2019-06-23

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

枚举+数位dp

注意处理数字为0和1的情况。

#include 
#include
using namespace std;#define D(x) const int MAX_DIGIT = 20;long long n;int f[MAX_DIGIT];long long memoize[MAX_DIGIT][20*20*9];int pivot;int to_digits(long long a){ int ret = 0; while (a > 0) { f[++ret] = a % 10; a /= 10; } return ret;}long long dfs(int digit, bool less, int weight){ if (digit <= 0) { return weight == 0; } if (less && memoize[digit][weight] != -1) { return memoize[digit][weight]; } int limit = less ? 9 : f[digit]; long long ret = 0; for (int i = 0; i <= limit; i++) { int new_weight = weight + (digit - pivot) * i; if (new_weight < 0) { continue; } ret += dfs(digit - 1, less || i < f[digit], new_weight); } memoize[digit][weight] = ret; return ret;}long long work(long long n){ if (n < 0) { return 0; } int len = to_digits(n); long long ret = 0; for (int i = 1; i <= len; i++) { pivot = i; memset(memoize, -1, sizeof(memoize)); ret += dfs(len, false, 0); } return ret - len + 1;}int main(){ int t; scanf("%d", &t); while (t--) { long long a, b; scanf("%lld%lld", &a, &b); printf("%lld\n", work(b) - work(a - 1)); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/rainydays/p/4286398.html

你可能感兴趣的文章
pkill -9 nginx
查看>>
关于ASP.NET MVC4 Web API简单总结
查看>>
BGP最新的AS号:4-byte-as 转换为十进制及AS号兼容性
查看>>
Windows2008server R2 组策略批量更改本地管理员密码
查看>>
ubutnu安装geany
查看>>
webservice 之 Java CXF实战效果 RS WS(一)
查看>>
iOS企业证书发布流程
查看>>
我的友情链接
查看>>
Repository 与 DAO
查看>>
【vmcloudlab】Hyper-V平台上安装Linux集成服务
查看>>
Zabbix监控Windows主机
查看>>
Docker的文件系统
查看>>
IBM x3850 RAID5数据恢复方案及过程
查看>>
移动计算领域五大机遇:交通运输优势待挖掘
查看>>
如何把win7 旗舰版升级到sp1最新版本
查看>>
android 调用系统界面
查看>>
Software Enginering-------using git
查看>>
浅谈IP地址-1
查看>>
我的友情链接
查看>>
C#中的线程池使用(一)
查看>>