题目链接:http://acm.swust.edu.cn/problem/1097/

Time limit(ms): 1000      Memory limit(kb): 32768
 

今年是2014年,所以小明喜欢2014的每一位数字(即:2,0,1,4),小明想知道在区间[l,r](包括l和r)中有多少个数中含有这4个数字(数字无前缀零)。

Description

多组数据。

每组数据输入2个数l,r(0<l<r<=10^9)

Input

输出占一行,即区间[l,r](包括l和r)中包含的满足条件的数的个数

Output
1
2
3
1 10
100 1024
 
Sample Input
1
2
3
0
1
 
Sample Output
输出换行请使用\r\n

Hint
swust第10届校赛
 
 
解题思路:就一个简单的数位dp,直接套模板就是了~~~
(不会的可以戳戳这里:http://www.cnblogs.com/zyxStar/p/4563830.html
 
代码如下:
 #include<iostream>
#include<cstring>
using namespace std;
int dp[][][][][];//返回各数状态
int bit[]; //数位dp
int dfs(int pos, int s2, int s0, int s1, int s4, bool limit, bool fzero)
{
//注意前导零的影响
if (pos == -) return s2&&s0&&s1&&s4;
if (!limit&&!fzero&&~dp[pos][s2][s0][s1][s4])
return dp[pos][s2][s0][s1][s4];//条件判断
int end = limit ? bit[pos] : ;
int ans = , i;
for (i = ; i <= end; i++){
int now2 = s2, now0 = s0, now1 = s1, now4 = s4;
if (s2 == ){
if (i == )
now2 = ;
}
if (s0 == ){
if (!fzero&&i == )
now0 = ;
}
if (s1 == ){
if (i == )
now1 = ;
}
if (s4 == ){
if (i == )
now4 = ;
}
ans += dfs(pos - , now2, now0, now1, now4, limit&&i == end, fzero&&!i);
}
return limit || fzero ? ans : dp[pos][s2][s0][s1][s4] = ans;
}
int calc(int n){
int len = ;
while (n){
bit[len++] = n % ;
n /= ;
}
return dfs(len - , , , , , , );
}
int main(){
int l, r;
memset(dp, -, sizeof(dp));
while (cin >> l >> r)
cout << calc(r) - calc(l - ) << "\r\n";
return ;
}

最新文章

  1. pc端与移动端的区别
  2. wpf 遍历控件及其值
  3. CSS样式之优先级
  4. 用maven配置springboot+freemarker
  5. Ant 学习及常用任务
  6. A.Kaw矩阵代数初步学习笔记 7. LU Decomposition
  7. 用自己的ID在appstore中更新app-黑苹果之路
  8. 给Apache增加SSI支持(shtml的奥秘)
  9. 【CC评网】2013.第42周 话说时间管理
  10. UI基础:UIActionSheet和UIAlterView
  11. ubuntu下nfs服务器的安装与配置
  12. Google map实现类似Google earth的图标展开功能
  13. Box.net获5000万美元投资(SAAS博士)
  14. OC-多线程GCD的使用细节
  15. 简谈-Python的注释、变量类型、标识符及关键字
  16. 安装配置Kafka
  17. WebView 判断放大缩小操作
  18. python学习笔记----random
  19. Apache Commons Codec的Base64加解密库
  20. pycharm 取消 rebase 操作

热门文章

  1. idea14 maven项目 jdk编译版本无法修改
  2. Yii2.0中文开发向导——删除数据
  3. app 转caf 音频 代码
  4. JS常用方法函数(2)
  5. 定位CPU高的方法
  6. Qt实战之开发CSDN下载助手 (3)(结束篇)
  7. Struts2学习笔记(二) 使用通配符动态调用方法
  8. [转]chrome技术文档列表
  9. Android 关于调用系统内已安装的相机问题
  10. docpad建站记录