51nod-【1042 数字0-9的数量】
来源:互联网 发布:离地间隙高的轿车 知乎 编辑:程序博客网 时间:2024/06/08 08:32
1042 数字0-9的数量
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
收藏
关注
给出一段区间a-b,统计这个区间内0-9出现的次数。
比如 10-19,1出现11次(10,11,12,13,14,15,16,17,18,19,其中11包括2个1),其余数字各出现1次。
Input
两个数a,b(1 <= a <= b <= 10^18)
Output
输出共10行,分别是0-9出现的次数
Input示例
10 19
Output示例
11111111111
如果是第一次接触这样的题目,推荐先看这个1009 数字1的数量再次解释一下,随便举个数 456 求2出现的次数我们在这里值分析百位的4 因为 4>2 把百位看成2,十位和个位有100种方案然后百位可以取 0 1 2 3 这4个数,每个数对应有dp[2]
#include<cstdio>#include<cstring>#include<cmath>#define LL long longLL dp[20]; void Init(){memset(dp,0,sizeof(dp)); int i;for(i=1;i<20;++i)dp[i]=dp[i-1]*10+pow(10,i-1);}LL solver(LL n,LL to){LL temp=1,tn=n,rail=0,result=0,digit=0;LL len=0;while(tn){digit=tn%10;tn/=10;++len;if(to==digit){result+=rail+1+digit*dp[len-1]; } else if(digit>to){result+=digit*dp[len-1]+temp; } else if(digit<to) result+=digit*dp[len-1]; rail+=digit*temp;temp*=10;}if(to==0){temp=1;while(n){result-=temp;n/=10;temp*=10;} } return result;} int main(){Init(); LL a,b;while(scanf("%lld%lld",&a,&b)!=EOF){LL i;for(i=0;i<=9;++i)printf("%lld\n",solver(b,i)-solver(a-1,i)); } }
0 0
- 51nod 1042:数字0-9的数量
- 51nod 1042 数字0-9的数量 数位DP
- 51nod 1042 数字0~~9的数量
- 51Nod-1042-数字0~9的数量
- 51NOD 1042 数字0-9的数量 数位DP
- 51nod 1042 数字0-9的数量(数位dp)
- 51nod-【1042 数字0-9的数量】
- 51nod-1042 数字0-9的数量
- 51nod 1042 数字0-9的数量
- 51Nod 1042 数字0-9的数量
- 51nod 1042 数字0-9的数量【数位dp】
- 51nod 1042 数字0-9的数量
- 51Nod 1042 数字0-9的数量 (数位DP
- 51nod 1042 数字0-9的数量 数位DP
- 51nod 1042 数字0-9的数量
- 51Nod 1042 数字0-9的数量
- 数位dp 总结 51nod数字1的数量 数字0-9的数量
- 51nod数字0-9的数量(数位dp)
- Android——NDK笔记
- java优先级的一个细节
- lightoj 1085 树状数组+dp
- 1010. 一元多项式求导 (25)
- linux系统编程之文件与I/O(五):文件的内核结构file和dup实现重定向
- 51nod-【1042 数字0-9的数量】
- Shell脚本
- Dom4j-使用指导
- centos连接不上网络的处理办法
- Leetcode #240 Search a 2D Matrix II
- 使用log4j记录日志
- setonClickListener()的解释
- 消息队列中点对点与发布订阅区别
- Android动画3D立体旋转,属性动画与View动画效果区别