UVA 1640 The Counting Problem
https://vjudge.net/problem/UVA-1640
题意:统计区间[l,r]中0——9的出现次数
数位DP
注意删除前导0
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int ans[],a[],dp[][],bit[];
int dfs(int dep,int ty,bool lim,int k)
{
if(!dep) return ty;
if(!lim && dp[dep][ty]!=-) return dp[dep][ty];
int ans=,up= lim ? a[dep] : ;
for(int i=;i<=up;i++)
{
if(i==k) ans+=dfs(dep-,ty+,lim && i==up,k);
else ans+=dfs(dep-,ty,lim && i==up,k);
}
if(!lim) dp[dep][ty]=ans;
return ans;
}
int main()
{
int l,r;
bit[]=;
for(int i=;i<=;i++) bit[i]=bit[i-]*;
while(scanf("%d%d",&l,&r)!=EOF)
{
if(!l) return ;
if(l>r) swap(l,r);
memset(ans,,sizeof(ans));
a[]=;
while(r) a[++a[]]=r%,r/=;
for(int i=;i<=;i++)
{
memset(dp,-,sizeof(dp));
ans[i]=dfs(a[],,,i);
}
l--; if(!l) ans[]--;
int tmp=a[];
a[]=;
while(l) a[++a[]]=l%,l/=;
for(int i=;i<=;i++)
{
memset(dp,-,sizeof(dp));
ans[i]-=dfs(a[],,,i);
}
while(tmp!=a[]) ans[]-=bit[--tmp];
printf("%d",ans[]);
for(int i=;i<=;i++) printf(" %d",ans[i]);
printf("\n");
}
}
UVA 1640 The Counting Problem的更多相关文章
- UVA 1640 The Counting Problem UVA1640 求[a,b]或者[b,a]区间内0~9在里面各个数的数位上出现的总次数。
/** 题目:UVA 1640 The Counting Problem UVA1640 链接:https://vjudge.net/problem/UVA-1640 题意:求[a,b]或者[b,a] ...
- UVa 1640 - The Counting Problem(数论)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVa 1640 The Counting Problem (数学,区间计数)
题意:给定两个数m, n,求从 m 到 n 中0-9数字各出现了多少次. 析:看起来挺简单的,其实并不好做,因为有容易想乱了.主要思路应该是这样的,分区间计数,先从个位进行计,一步一步的计算过来.都从 ...
- UVA.1640.The Counting Problem / BZOJ.1833.[ZJOI2010]数字计数(数位DP)
题目链接 \(Description\) 求\([l,r]\)中\(0,1,\cdots,9\)每个数字出现的次数(十进制表示). \(Solution\) 对每位分别DP.注意考虑前导0: 在最后统 ...
- UVA 1640 The Counting Problem(按位dp)
题意:给你整数a.b,问你[a,b]间每个数字分解成单个数字后,0.1.2.3.4.5.6.7.8.9,分别有多少个 题解:首先找到[0,b]与[0,a-1]进行区间减法,接着就只是求[0,x] 对于 ...
- UVA - 1640 The Counting Problem (数位dp)
题意:统计l-r中每种数字出现的次数 很明显的数位dp问题,虽然有更简洁的做法但某人已经习惯了数位dp的风格所以还是选择扬长避短吧(说白了就是菜啊) 从高位向低位走,设状态$(u,lim,ze)$表示 ...
- uva 11401 Triangle Counting
// uva 11401 Triangle Counting // // 题目大意: // // 求n范围内,任意选三个不同的数,能组成三角形的个数 // // 解题方法: // // 我们设三角巷的 ...
- UVa 101 The Blocks Problem Vector基本操作
UVa 101 The Blocks Problem 一道纯模拟题 The Problem The problem is to parse a series of commands that inst ...
- UVa 1225 Digit Counting --- 水题
UVa 1225 题目大意:把前n(n<=10000)个整数顺次写在一起,12345678910111213...,数一数0-9各出现多少字 解题思路:用一个cnt数组记录0-9这10个数字出现 ...
随机推荐
- avalonJS入门
前端神器avalonJS入门(一) posted @ 2014-10-31 17:44 vajoy 阅读(8759) 评论(42) 编辑 收藏 avalonJS是司徒正美开发和维护的前端mvvm框 ...
- 王者荣耀交流协会beta冲刺贡献分分配结果
根据原来约定的(贡献分分配规则){http://www.cnblogs.com/gaoyb348/p/7828523.html} 总共20个任务,一共35分,那么一个任务1.75分. 冉华完成了9个任 ...
- Thunder团队Beta周贡献分规则
小组名称:Thunder 项目名称:i阅app 组长:王航 成员:李传康.翟宇豪.邹双黛.苗威.宋雨.胡佑蓉.杨梓瑞 分配规则 规则1:基础分,拿出总分的20%(8分)进行均分,剩下的80%(32分) ...
- 简单理解SQL Server锁机制
多个用户同时对数据库的并发操作时,可能会遇到下面几种情况,导致数据前后不一致: 1,A.B事务同时对同一个数据进行修改,后提交的人的修改结果会破坏先提交的(丢失更新): 2,事务A修改某一条数据还未提 ...
- 伟大的淘宝IP库的API接口竟然提示503挂掉了
1 淘宝IP库惊现503错误 吃完晚饭,大概6点半了,天色已暗,太阳早就落山了.回到宿舍打开博客一看,傻眼了:博客每篇文章的评论者的地理信息全部处于“正在查询中……”的状态.这神马情况,不会是被淘宝封 ...
- [OS] 操作系统错题集
1. (判断) 答案:错 缓冲区有两块:高速缓存区(物理存在)和磁盘缓存区(逻辑存在,实际是内存一块),都不在外存(硬盘). 2. 操作系统的功能:处理机管理(进程管理).作业管理.存储管理.设备管理 ...
- [BinaryTree] 二叉树类的实现
二叉树结点的抽象数据类型: template<class T> class BinaryTreeNode { friend class BinaryTree<T>; priva ...
- 几种常见web 容器比较
1:产品介绍 WebLogic是美国bea公司出品的一个application server确切的说是一个基于j2ee架构的中间件.BEA WebLogic是用于开发.集成.部署和管理大型分布式We ...
- (转)python 搭建libsvm方法。python版本和libsvm版本匹配很重要!
<集体智慧编程>关于婚介数据集的SVM分类 转自:http://muilpin.blog.163.com/blog/static/165382936201131875249123/ 作 ...
- Oracle 转义字符
id sfds_V_SF ASD_V_DSAF SD_V_DSAD 下划线是Oracle特殊字符,需要转移,如下 select * from systab t where t.id like ...