[swustoj 1097] 2014

2014(1097)

问题描述

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

输入

多组数据。

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

输出

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

样例输入

1 10
100 1024

样例输出

0

1

简单数位DP

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;

int bit[20];
int dp[20][2][2][2][2];

int dfs(int pos,int n2,int n0,int n1,int n4,bool limit,bool fzero)
{
    if(pos==-1)
    {
        return n2&n0&n1&n4;
    }
    if(!limit && !fzero && dp[pos][n2][n0][n1][n4]!=-1) return dp[pos][n2][n0][n1][n4];
    int end=limit?bit[pos]:9;
    int ans=0;
    for(int i=0;i<=end;i++)
    {
        int nn2=i==2?1:0;
        int nn0=i==0?1:0;
        int nn1=i==1?1:0;
        int nn4=i==4?1:0;
        if(fzero) nn0=0;
        ans+=dfs(pos-1,n2|nn2,n0|nn0,n1|nn1,n4|nn4,limit && i==end,fzero && !i);
    }
    if(!limit && !fzero) dp[pos][n2][n0][n1][n4]=ans;
    return ans;
}
int cal(int n)
{
    int len=0;
    while(n)
    {
        bit[len++]=n%10;
        n/=10;
    }
    return dfs(len-1,0,0,0,0,1,1);
}
int main()
{
    int l,r;
    memset(dp,-1,sizeof(dp));
    while(cin>>l>>r)
    {
        cout<<cal(r)-cal(l-1)<<"\n";
    }
    return 0;
}
时间: 2024-08-10 21:04:53

[swustoj 1097] 2014的相关文章

2014中国省市数据库

insert into __table(id,[name],parentid)values('1','北京市','0') insert into __table(id,[name],parentid)values('2','东城区','1') insert into __table(id,[name],parentid)values('3','西城区','1') insert into __table(id,[name],parentid)values('4','朝阳区','1') insert

2014马哥Linux0217中对0214三题的解答

前几天在做2014马哥Linux0214的作业的时候,发现其实这三题在0217中有解答,当然觉得马哥比自己写得好太多,所以忍不住要把马哥的答案贴出来,以供自己学习. 第一题:写一个脚本,用for循环实现显示/etc/init.d/functions./etc/rc.d/rc.sysinit./etc/fstab有多少行 #!/bin/bash for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab;do line

【国家统计局】2013年6月份-2014年5月份70个大中城市住宅销售价格变动情况

2014年5月份70个大中城市住宅销售价格变动情况 http://www.stats.gov.cn/tjsj/zxfb/201406/t20140618_569655.html (一)与上月相比,70个大中城市中,价格下降的城市有35个,持平的城市有20个,上涨的城市有15个.环比价格变动中,最高涨幅为0.3%,最低为下降1.4%. (二)与去年同月相比,70个大中城市中,价格下降的城市有1个,上涨的城市有69个.5月份,同比价格变动中,最高涨幅为11.3%,最低为下降4.8%. -------

[IDE工具配置]myeclipse 2014 专业版 安装 svn插件

团队合作的项目肯定少不了版本控制,那么现在就看看myeclispe中是如何使用的吧. 开发环境:myeclipse 2014   java 8 tomcate 8 试了网上说的几种方法,都没有成功,最终自己还是摸索着弄出来了,这里先记录一下,后期自己再配置的时候好获取路径啥的. 打开myeclipse的help---install from site 点击add弹出对话框 在输入框中输入对应内容 http://subclipse.tigris.org/update_1.10.x 点击OK之后,会

2014总结-表彰一下辛勤的我

2014.3-2014.6月份,做了一个项目<人事管理系统>,这个项目对自己影响还是挺大的,当时我的BS刚刚学习了一部分,在人事系统用到的许多的东西都是没有接触过的,所以BS的一些东西都是从项目中去实践然后学习到的,就是因为这个原因,对于BS的理解特别深刻,也是从这个时候我学会了使用API文档,学会了真正的理解学习应该是什么样子的,知识是学不完的,就像API文档中的内容一样,在不停的扩充无边界,但是我要学会的一种能力就是遇到了问题怎么去利用API文档解决文档. 2014.7-2014.9这期间

2014半年小总结

2014半年小总结 已经毕业工作快满两年了,从一家垄断国字号企业跳到某电商平台,应该是我的职业生涯第一跳了,也很荣幸地投身入互联网浪潮之中.没过多久就融入了这家朝气蓬勃的大家庭.回汉后,起初打算做机器学习.数据挖掘的相关工作,以能延续研究生的课题.不过作为新东家BI组第一位员工,不得不着手搭建基础数据平台. 工作成果与心得 基础数据平台和报表系统,爬虫 五个月,小半年,我们三兄弟的工作成果也是比较显著,在被领导否定第一版数据平台后,开始重新搭建新js埋点作为数据源的基础数据平台. 1. jugg

2014年工作中遇到的10个问题:221-230

221.新建Maven项目的2种方式. a.新建Dynamic Web Project,然后转换成Maven项目. b.新建Maven Project,Next,Next,选择cocoon-22-archetype-webapp. 第2种方式,是boss告诉我的,以前我一直喜欢用第1种方式. 第2种方式,暂时没有去实践.上次尝试了下,报错,郁闷~ 222.web.xml中配置taglib. 在Eclipse中会在taglib那一行有一个错误标志,但是运行的 时候没有问题-- 原因: 所使用版本的

SQL Server 2014 日志传送部署(1):日志传送概述

13.1 日志传送概述 13.1.1日志传送工作原理 日志传送是一种事务日志备份传送技术.日志传送允许从一个数据库(即主服务器上的主数据库)向多个在另外的服务器(即辅助服务器)上的数据库(即辅助数据库)自动发送事务日志备份.在辅助服务器上,这些事务日志备份被恢复到辅助数据库中,并和主数据库保持同步.一个可选的三级服务器(即监视服务器),记录事务日志备份.复制和恢复操作的历史和状态,以及这些操作依照计划不能发生时报警. 在日志传送中可配置一个主服务器实例向多台辅助服务器实例传送事务日志,在日志传送

SQL Server 2014 日志传送部署(2):日志传送系统要求和实验架构

13.2 部署日志传送 13.2.1 部署日志传送的系统要求 SQL Server 2014日志传送的部署对硬件基础设施有一定的要求,下面将概述这些系统要求. 网络 日志传送不一定需要Windows域环境,但是Windows域环境方便了日志传送的配置和管理:相对非域环境,其安全性提升不少. 参与日志传送的SQL Server服务器必须在网络中相互连通,主服务器能够将事务日志备份到共享文件夹,辅助服务器可以将事务日志备份复制到本地文件夹:监视服务器能够连接到主服务器和辅助服务器. 服务器和存储 主