B吉利数字
时限:1s
【题目描述】
算卦大湿biboyouyun最近得出一个神奇的结论,如果一个数字,它的各个数位相加能够被10整除,则称它为吉利数。现在叫你计算某个区间内有多少个吉利数字。
【输入】
第一行为样例个数N。接下来N行,每一行代表一个输入样例,每个输入样例有2个数,分别代表某个区间的起点a和终点b。
注意所求区间为[a,b],1<=a<=b<=10^9
【输出】
N行。对于第x个输入样例,在第x行输入该样例所对应的结果。
【输入样例】
2
1 10
1 20
【输出样例】
0
1
【Hint】1-10之内无幸运数,1-20内只有19 这1个幸运数
------------------------------------------------------------------------------------
数位dp入门题。
一开始参考了数位dp入门ppt的非递归写法,先打个表再计算,结果YY了半天还是错了T^T
这里有个用dfs写法写数位dp的模板:
http://www.cnblogs.com/jffifa/archive/2012/08/17/2644847.html
代码:
#include <stdio.h>
#include <string.h>
int dp[][];
int dig[]; int dfs(int i,int s,bool e)
{
if (!i) return (s==?:);
if ((!e)&&(dp[i][s]!=-)) return dp[i][s];
int res=;
int u=e?dig[i]:;
for (int q=;q<=u;q++)
res+=dfs(i-,(s+q)%,e&&q==u);
if (!e) dp[i][s]=res;
return res;
} int f(int n)
{
int len = ;
while(n)
{
dig[++len] = n % ;
n /= ;
}
return dfs(len,,true);
} int main()
{
int a,b,T;
memset(dp,-,sizeof(dp));
scanf("%d",&T);
while (T--)
{
scanf("%d %d",&a,&b);
printf("%d\n",f(b)-f(a-));
}
return ;
}
核心部分:(来自neopenx大神,orz)
int dfs(int len,int remain,bool fp)
{
if(!len) return remain==?:;
if(!fp&&dp[len][remain]!=-)
return dp[len][remain];
int ret=,fpmax=fp?digit[len]:;
for(int i=;i<=fpmax;i++)
ret+=dfs(len-,(remain+i)%,fp&&i==fpmax);
if(!fp) dp[len][remain]=ret;
return ret;
} int f(int n)
{
int len=;
while(n)
{
digit[++len]=n%;
n/=;
}
return dfs(len,,true);
}
len:表示当前扫描到的数的位数,从高位向地位扫描
remain:表示当前状态。如本题中表示从最高位到当前位各位数字和%10
fp:又叫first place,neopenx的大神的理解是第一次打表
该dfs函数的基本思想也是打个表记下来,边记边用
fpmax:当前最高位
扩展:hdu2089
http://blog.csdn.net/dgq8211/article/details/9296953
xbz分组题B 吉利数字 数位dp入门的更多相关文章
-
HDU 2089 不要62【数位DP入门题】
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
-
数位dp入门 hdu2089 不要62
数位dp入门 hdu2089 不要62 题意: 给定一个区间[n,m] (0< n ≤ m<1000000),找出不含4和'62'的数的个数 (ps:开始以为直接暴力可以..貌似可以,但是 ...
-
hdu3555 Bomb 数位DP入门
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 简单的数位DP入门题目 思路和hdu2089基本一样 直接贴代码了,代码里有详细的注释 代码: ...
-
HDU 2089 - 不要62 - [数位DP][入门题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...
-
哈尔滨工程大学ACM预热赛 G题 A hard problem(数位dp)
链接:https://ac.nowcoder.com/acm/contest/554/G Now we have a function f(x): int f ( int x ) { if ( ...
-
hdu 2089 数位dp入门题
#include<stdio.h> //dp[i][0]代表不存在不吉利数字 //dp[i][1]代表不存在不吉利数字但是以2开头 //dp[i][2]代表存在不吉利数字 #define ...
-
牛客小白月赛8 - E - 诡异数字 数位DP
牛客小白月赛8 - E - 诡异数字 题意: 求区间中,满足限制条件的数字的个数. 限制条件就是某些数字不能连续出现几次. 思路: 比较裸的数位DP, DP数组开一个dp[len][x][cnt] 表 ...
-
数位DP入门题——[hdu2089]不要62
数位DP是我的噩梦. 现在初三了,却没AC过数位DP的题目. 感觉数位DP都是毒瘤-- 题目 hdu不用登录也可以进去,所以就不把题目copy到这里来了. 题目大意 求区间[n,m][n,m][n,m ...
-
SCUT - 289 - 小O的数字 - 数位dp
https://scut.online/p/289 一个水到飞起的模板数位dp. #include<bits/stdc++.h> using namespace std; typedef ...
随机推荐
-
MySQL 主从复制与读写分离概念及架构分析
1.MySQL主从复制入门 首先,我们看一个图: 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中. 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的33 ...
-
siege详解
简介 siege是一款HTTP/FTP负载测试和基准压测工具 Download http://download.joedog.org/siege/siege-latest.tar.gz 安装 ...
-
圆满完成Web安全测试培训课程广州公开班!
圆满完成Web安全测试培训课程广州公开班! http://gdtesting.com/news.php?id=187 下期<Web安全测试最佳实践>公开课通知:8月9.10日地点:广州 课 ...
-
【转】 自定义iOS7导航栏背景,标题和返回按钮文字颜色
原文:http://blog.csdn.net/mad1989/article/details/41516743 UIBarButtonItem,navigationItem,backBarButto ...
-
Flink Program Guide (3) -- Event Time (DataStream API编程指导 -- For Java)
Event Time 本文翻译自DataStream API Docs v1.2的Event Time ------------------------------------------------ ...
-
mysql distinct、group_concat
mysql distinct语句用于查询多条不重复记录值(去重.过滤多余的重复记录) distinct同时作用了两个字段或者两个以上的字段,必须得作用了的字段都相同的才被排除.如果想让单个列" ...
-
Hive(笔记)
(2015.07.22Hive笔记) 一.Hive的安装 1.1Hive的安装过程 下载hive源文件(apache-hive-0.14.0-bin.tar.gz ) 解压hive文件 进入$HIVE ...
-
【nodejs之我的开源module】 使用express搭建web服务器,代码即文档的实现。
前言 都说nodejs适合制作restful_API,因为它有异步处理能力,能吞吐更多的请求,这一点是大家都认可的.前不久我使用nodejs+express+postgresql搭建了一个restfu ...
-
typescript初入门
1.通过npm安装 typescript 进入终端窗口安装typescript: npm install -g typescript 查看typescript版本号: tsc -v 2.编译代码:t ...
-
PHP源代码生成 main/config.w32.h
PHP源代码生成 main/config.w32.h 1.下载php源代码包php-5.4.0.tar.gz,解压到D:\php-5.4.0 2.下载2个必要的包http://xiazai.jb51. ...