数位dp姿势一直很差啊;顺便庆祝一下1A

Description

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

Input

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

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<=10^6;
100%的数据中,a<=b<=10^12。


题目分析

数位dp经典入门题

说到底,数位dp快就快在按位计算答案,而不是按数计算答案。

这个有些抽象,所以还是看代码吧。

 #include<bits/stdc++.h>
typedef long long ll; ll a,b,ans[];
ll digit[];
ll base[]; ll read()
{
char ch = getchar();
ll num = ;
bool fl = ;
for (; !isdigit(ch); ch = getchar())
if (ch=='-') fl = ;
for (; isdigit(ch); ch = getchar())
num = (num<<)+(num<<)+ch-;
if (fl) num = -num;
return num;
}
void work(ll num, ll c)
{
for (digit[]=; num; num/=)
digit[++digit[]] = num%;
for (int i=digit[]; i; i--)
{
for (int j=digit[]; j>i; j--)
ans[digit[j]] += c*(digit[i]*base[i]);
for (int j=; j<digit[i]; j++)
{
for (int k=; k<=; k++)
ans[k] += c*base[i-]*(i-);
ans[j] += c*(base[i]);
}
if (i==digit[]){
ans[] -= c*digit[];
for (int j=; j<digit[]; j++)
ans[] -= c*j*base[digit[]-j]*;
}
}
}
int main()
{
base[] = ;
for (int i=; i<=; i++) base[i] = base[i-]*10ll;
a = read(), b = read()+;
work(a, -);
work(b, );
for (int i=; i<=; i++)
printf("%lld ",ans[i]);
return ;
}

END

最新文章

  1. java内置数据类型
  2. paip.gui控件form窗体的原理实现以及easyui的新建以及编辑实现
  3. eBay Notification介绍
  4. IntelliJ IDEA gradle 创建 Java web 应用
  5. Visual Studio 2013 如何关闭调试而不关闭IIS Express
  6. Windows下环境变量配置
  7. C# 内存管理优化畅想(三)---- 其他方法&amp;结语
  8. [妙味JS基础]第六课:作用域、JS预解析机制
  9. 【Unity3D技术文档翻译】第1.3篇 创建 AssetBundles
  10. java  JDK配置环境变量
  11. 深入理解Spring IOC工作原理
  12. react基础学习 三
  13. 缺失dll的问题
  14. day18 十八、random、shutil、shevle、logging
  15. PAT L3-021 神坛
  16. imageio.ffmpeg.download() has been deprecated. Use &#39;pip install im ageio-ffmpeg&#39; instead.&#39;
  17. nginx配置自动跳转
  18. Sql语法高级应用之七:如何在存储过程中使用事务
  19. springboot启动太慢优化
  20. c++ 宏多态 动态多态和静态多态(转载)

热门文章

  1. autoResizing autoLayout和sizeClass
  2. web前端篇:JavaScript基础篇(易懂小白上手快)-1
  3. .netcore--Controller后台实现企业微信发送消息
  4. spring+mybits 整合所需jar包的下载路径(亲测有效)
  5. AFHTTPSessionManager下载文件 及下载中 进度条处理,进度条处理需要特别注意,要加载NSRunLoop 中
  6. python学习之邮件
  7. 牛客网Java刷题知识点之什么是迭代器
  8. mysql添加用户并赋予权限命令
  9. 微信小程序开发-微信登陆流程
  10. 事件对象,arguments、事件的兼容问题