Description

题意就是找0到N有多少个数中含有49。

\(1\leq N \leq2^{63}-1\)

Solution

数位DP,与hdu3652类似

\(F[i][state]\)表示位数为i,包含49状态为state时的方案数

注意开\(long long\)

Tips

注意N范围很大,位数不止10位!!

Code

#include <cstdio>
#include <cstring>
#define ll long long int d[20];
ll dp[20][3],n,T; inline ll read(){
ll x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
} ll dfs(int p,int sta,int lim){
ll &tmp=dp[p][sta],r=0;
if(!lim&&tmp!=-1) return tmp;
if(!p) return sta==2; int mx=lim?d[p]:9;
for(int i=0;i<=mx;++i){
int t=0;
if(sta==2) t=2;
else if(sta==1&&i==9) t=2;
else if(i==4) t=1;
r+=dfs(p-1,t,lim&&(i==mx));
}
return lim?r:tmp=r;
} int main(){
T=read();
memset(dp,-1,sizeof(dp));
while(T--){
n=read();
int len=0;
while(n){
d[++len]=n%10;
n/=10;
}
d[len+1]=0;
printf("%lld\n",dfs(len,0,1));
}
return 0;
}

最新文章

  1. python爬虫的一些心得
  2. python3 安装scrapy
  3. Android ORM应用开发框架KJFrameForAndroid使用详解
  4. centos 7 相关的一些记录
  5. (转)linux服务器安全配置攻略
  6. soapui中文操作手册(十)----REST Sample Project
  7. php中的邮件技术
  8. MySQL学习指引
  9. python 抓取javascript 动态数据
  10. Laravel Repository 模式
  11. 传统IO与NIO的比较
  12. icon font
  13. cStringIO模块例子
  14. Django学习笔记(三)—— 型号 model
  15. 一段代码让你秒懂java方法究竟是传值还是传地址
  16. 【Python】使用super初始化超类
  17. Java虚拟机原理
  18. httpd2.2配置文件详解
  19. redis的持久化方式RDB和AOF的区别
  20. 名称 ****不是有效的标识符 sql

热门文章

  1. javascript中数组与字符串之间的转换以及字符串的替换
  2. SQL表连接查询(inner join(join)、full join、left join、right join、cross join)
  3. mkdir--命令
  4. Hibernate框架学习之注解映射实体类
  5. J-Link驱动下载和Hex程序下载
  6. Python 直接赋值、浅拷贝和深度拷贝解析
  7. javascript获取年月日
  8. CLR设计类型之接口
  9. Python之argparse模块
  10. 【转】用PowerDesigner制作数据库升级脚本