题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1042

题目:
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示例
1
11
1
1
1
1
1
1
1
1 题解: 求区间[a,b]各位数字出现次数并打印输出。
因为数据是10^18,暴力会T。
所以应该要找出出现的规律,优化算法。 从个位开始分析各个数位。
不妨把当前数位右侧的数都当作0来统计: 1、当前数位(cur):那么当前数位从1开始到cur,当前数位每增大1,这个数字出现次数是当前数位的权值value(如从11增大到12时,个位上1出现了value = 1次;从110增大到120时,十位上的1出现了value = 10次) 2、当前数位左边的数(res)也会影响当前数位:res每增大1,当前数位的数都会从0-9走遍历一遍,其中每次遍历在0-9的每个数字上产生的次数为value次。(如12300这个数,res = 123 ,value = 10,十位上的0-9产生的总次数均为 res * value = 1230 次) 3、当前数位还会影响当前数位左边的数:当前数位从0开始到cur,当前数位每增大1,当前数位左边的每个数均出现value次,所以总共会出现value * (cur + 1)次。(如12340这个数,cur = 4,value = 10。从12300增大到12349时,cur左边的1、2、3这三个数均会出现 value * (cur + 1) = 50次) 4、如果当前数位左边还有数,当前数位左移,继续统计。 AC代码:
 #include <iostream>
#include <cstring> using namespace std;
typedef long long ll; void dfs(ll res , ll value , ll LLSum[])
{
ll cur = res % ;
res /= ;
ll t = res;
for (int i = ; i <= cur ; i++) LLSum[i] += value;
for (int i = ; i < ; i++) LLSum[i] += res * value;
while (t) {
LLSum[t%] += (cur + ) * value;
t /= ;
}
if (res) dfs(res-,value * ,LLSum);
return;
} int main()
{
ll a,b;
ll Suma[],Sumb[];
memset(Suma,,sizeof(Suma));
memset(Sumb,,sizeof(Sumb));
cin >> a >> b;
dfs(a-,,Suma);
dfs(b,,Sumb);
for (int i = ; i < ; i++) {
cout << Sumb[i] - Suma[i] << endl;
}
return ;
}
其实只要撸清各位数字之间的影响就可以了。

51nod- 【1042 数字0-9的数量 】的更多相关文章

  1. 51nod 1042数字0-9的数量

    1042 数字0-9的数量  基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 给出一段区间a-b,统计这个区间内0-9出现的次数. 比如 10-19 ...

  2. 51nod 1042 数字0-9的数量 数位dp

    1042 数字0-9的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 给出一段区间a-b,统计这个区间内0-9出现的次数.   比如 10-1 ...

  3. 51nod 1042 数字0-9的数量

    给出一段区间a-b,统计这个区间内0-9出现的次数.   比如 10-19,1出现11次(10,11,12,13,14,15,16,17,18,19,其中11包括2个1),其余数字各出现1次. Inp ...

  4. (数位DP)51NOD 1042 数字0-9的数量

    给出一段区间a-b,统计这个区间内0-9出现的次数. 比如 10-19,1出现11次(10,11,12,13,14,15,16,17,18,19,其中11包括2个1),其余数字各出现1次.   输入 ...

  5. 1042 数字0-9的数量 1050 循环数组最大子段和 1062 序列中最大的数 1067 Bash游戏 V2 1092 回文字符串

    1042 数字0-9的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 给出一段区间a-b,统计这个区间内0-9出现的次数.   比如 10-19,1出现11次 ...

  6. 51 Nod1042 数字0到9的数量

    1042 数字0-9的数量  基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 给出一段区间a-b,统计这个区间内0-9出现的次数. 比如 10-19 ...

  7. 51nod 1042 数位dp

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1042 1042 数字0-9的数量 基准时间限制:1 秒 空间限制:131 ...

  8. 字符串怎么换行 || 字符串中使用单引号时应该怎么写 || 保留两位小数 || 数字0在if中的意思是false || 什么情况下会会报undefined || null和undefined的区别 ||

    换行的字符串 "This string\nhas two lines" 字符串中使用单引号时应该怎么写 'You\'re right, it can\'t be a quote' ...

  9. 【编程题目】n 个数字(0,1,…,n-1)形成一个圆圈,从数字 0 开始

    第 18 题(数组):题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字 0 开始,每次从这个圆圈中删除第 m 个数字(第一个为当前数字本身,第二个为当前数字的下一个数字).当一个数字删除后, ...

随机推荐

  1. 外部调用mvc的api方法时,如何解决跨域请求问题?

    首先,创建一个mvc项目(包含webapi),我们模拟一个场景 1)在项目的Controller 创建一个WeiXinApiController public class WeiXinApiContr ...

  2. git merge branch

    git branch   look at your branches git branch newbranch git checkout newbrach do something git check ...

  3. 计算机基础part1

    一:计算机的基本组成 1.计算机由输入单元.控制单元.算法逻辑单元.输出单元.存储单元,五大单元组成 二:概念篇 CPU:中央处理器,其内含有指令集(取码-解码-执行的过程) CPU同一时刻只能干一件 ...

  4. 写一个xml文件到磁盘的方法

    /** * 往磁盘上写一个xml文件 * * <?xml version="1.0" encoding="UTF-8" standalone=" ...

  5. 深度学习----Xavier初始化方法

    “Xavier”初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文<Understanding the difficulty of training deep feedf ...

  6. 《Python》模块和包

    一.模块 1.什么是模块: 一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用Python编写的代码(. ...

  7. DevExpress WinForms使用教程:Data Grid - Find Panel模式

    [DevExpress WinForms v18.2下载] DevExpress WinForms用户都熟知,Data Grid是整个产品线的主要产品.在v18.2中添加了一些新的功能,例如之前教程中 ...

  8. matlab中diff的用法

    若是diff(),括号里的元素为向量,那么前一个减后一个即为diff后的结果: 若diff(),括号里的元素为矩阵,那么下一行减上一行即为diff 后的结果:

  9. git 命令篇

    *利用命令在仓库新建文件 *远程克隆到本地 *查看子文件 *创建新的分支  合并分支 删除分支  *合并分支 冲突 当Git无法自动合并分支时,就必须首先解决冲突.解决冲突后,再提交,合并完成. 用g ...

  10. 前端关于列表的基础 day47

    <!DOCTYPE html><html lang="zh-CN"><head> <meta charset="utf-8&qu ...