博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[ZJOI2010]count 数字计数
阅读量:6302 次
发布时间:2019-06-22

本文共 1758 字,大约阅读时间需要 5 分钟。

Description

给定两个正整数ab,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。

Input

输入文件中仅包含一行两个整数ab,含义如上所述。

Output

输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。

Sample Input

1 99

Sample Output

9 20 20 20 20 20 20 20 20 20

HINT

30%的数据中,a<=b<=106
100%的数据中,a<=b<=1012

Source

Day1

思路

第一次写数位dp。。。顾名思义,数位dp就是对每个数位进行dp。一般来说,数位dp的适用范围是求一个区间[a,b]的值,其中ab会很大,而且值具有可加性。那么对于每个值可以分成一些段,如:2333可以分成求0-999,1000-1999,2000-2299,2300-2329,2330-2333的值。对于这道题,是这样写的:递推出fi,j,k表示长度为i开头j的所有数字中k的个数。然后分段处理就好了。

代码

#include 
#include
const int maxn=12;struct data{ long long num[10]; data operator +(const data &other) { data res; for(int i=0; i<=9; i++) { res.num[i]=num[i]+other.num[i]; } return res; }};data f[maxn+1][10];long long t[maxn+1],a,b;int init();data calc(long long n);int main(){ init(); scanf("%lld%lld",&a,&b); data x=calc(a-1),y=calc(b); for(int i=0; i<9; i++) { printf("%lld ",y.num[i]-x.num[i]); } printf("%lld\n",y.num[9]-x.num[9]); return 0;}int init(){ t[1]=1; for(int i=2; i<=13; i++) { t[i]=t[i-1]*10ll; } for(int i=0; i<=9; i++) { f[1][i].num[i]=1; } for(int i=2; i<=12; i++) { for(int j=0; j<=9; j++) { for(int k=0; k<=9; k++) { f[i][k]=f[i][k]+f[i-1][j]; f[i][k].num[k]+=t[i-1]; } } } return 0;}data calc(long long n){ data ans; ans.num[0]=1; for(int i=1; i<=9; i++) { ans.num[i]=0; } if(!n) { return ans; } int len=log(n)/log(10)+1; for(int i=1; i
0; i--) { h=n/t[i]; n%=t[i]; for(int j=0; j

转载于:https://www.cnblogs.com/Canopus-wym/p/10376298.html

你可能感兴趣的文章
防HTTP慢速攻击的nginx安全配置
查看>>
深入理解PHP内核(十四)类的成员变量及方法
查看>>
Spring Boot2.0+中,自定义配置类扩展springMVC的功能
查看>>
参与博客编辑器改版,我的礼物 感谢51cto
查看>>
JavaWeb笔记——JSTL标签
查看>>
Eclipse插件大全 挑选最牛的TOP30
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
逻辑卷管理器(LVM)
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
搭建LAMP架构
查看>>
神经网络注意力机制--Attention in Neural Networks
查看>>
Spring.Net+WCF实现分布式事务
查看>>
在Linux上高效开发的7个建议
查看>>
java数据结构 - 数组使用的代码
查看>>
个人简历-项目经验
查看>>
swoole异步任务task处理慢请求简单实例
查看>>
DHCP
查看>>
oracle数据泵导入分区表统计信息报错(四)
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>