当前位置: 首页 > news >正文

数位dp,338. 计数问题

338. 计数问题 - AcWing题库

给定两个整数 a 和 b,求 a 和 b 之间的所有数字中 0∼90∼9 的出现次数。

例如,a=1024,b=1032,则 a 和 b 之间共有 9 个数如下:

1024 1025 1026 1027 1028 1029 1030 1031 1032

其中 0 出现 10 次,1 出现 10 次,2 出现 7 次,3 出现 3 次等等…

输入格式

输入包含多组测试数据。

每组测试数据占一行,包含两个整数 a 和 b。

当读入一行为 0 时,表示输入终止,且该行不作处理。

输出格式

每组数据输出一个结果,每个结果占一行。

每个结果包含十个用空格隔开的数字,第一个数字表示 0 出现的次数,第二个数字表示 1 出现的次数,以此类推。

数据范围

0<a,b<100000000

输入样例:
1 10
44 497
346 542
1199 1748
1496 1403
1004 503
1714 190
1317 854
1976 494
1001 1960
0 0
输出样例:
1 2 1 1 1 1 1 1 1 1
85 185 185 185 190 96 96 96 95 93
40 40 40 93 136 82 40 40 40 40
115 666 215 215 214 205 205 154 105 106
16 113 19 20 114 20 20 19 19 16
107 105 100 101 101 197 200 200 200 200
413 1133 503 503 503 502 502 417 402 412
196 512 186 104 87 93 97 97 142 196
398 1375 398 398 405 499 499 495 488 471
294 1256 296 296 296 296 287 286 286 247

 解析:

AcWing 338. 计数问题(算法基础课) - AcWing

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
using namespace std;
typedef long long LL;
int a, b;int get(vector<int>num, int l, int r) {int ret = 0;for (int i = l; i >=r; i--) {ret = ret * 10 + num[i];}return ret;
}int power(int i) {int ret = 1;while (i--) {ret *= 10;}return ret;
}int count(int n,int x) {if (!n)return 0;vector<int>num;int ret = 0;while (n) {num.push_back(n % 10);n /= 10;}n = num.size();for (int i = n - 1 - !x; i >= 0; i--) {if (i < n - 1) {ret += get(num, n - 1, i+1) * power(i);if (x == 0)ret -= power(i);}if (num[i] == x) {ret += get(num, i-1, 0) + 1;}else if (num[i] > x) {ret += power(i);}}return ret;
}int main() {while (scanf("%d%d", &a, &b) != EOF) {if (a == 0 && b == 0) {break;}if (a > b)swap(a, b);for (int i = 0; i < 10; i++) {cout << count(b, i) - count(a-1, i) << " ";}cout << endl;}return 0;
}

http://www.lryc.cn/news/179089.html

相关文章:

  • 如何解决git clone http/https仓库失败(403错误)
  • 华为云云耀云服务器L实例评测 | 实例评测使用之硬件性能评测:华为云云耀云服务器下的硬件运行评测
  • Elasticsearch:使用 Elasticsearch 进行语义搜索
  • JVM的主要组成及其作用
  • 会议AISTATS(Artificial Intelligence and Statistics) Latex模板参考文献引用问题
  • 2023最新外贸建站:WordPress搭建外贸独立站零基础小白保姆级教程
  • HTTP请求交互基础(基于GPT3.5,持续更新)
  • 小谈设计模式(6)—依赖倒转原则
  • JetBrains常用插件
  • 【C++哈希应用】位图、布隆过滤器
  • Qt 编译纯c的C99的项目, error: undefined reference to `f()‘
  • TensorFlow入门(五、指定GPU运算)
  • Unity - 实践: Metallic流程贴图 转 Specular流程贴图
  • 第三章:最新版零基础学习 PYTHON 教程(第四节 - Python 运算符—Python 逻辑运算符及示例)
  • 如何做好测试?(三)功能测试 (Functional Testing, FT)
  • Ubuntu-Server-22.04安装桌面+VNC
  • 职业规划,什么是职业兴趣 - 我喜欢做什么?
  • 基于Java的高校学生党员发展流程管理系统设计与实现(源码+lw+部署文档+讲解等)
  • 【NLP的python库(03/4) 】: 全面概述
  • 面试理论篇三
  • ShardingSphere|shardingJDBC - 在使用数据分片功能情况下无法配置读写分离
  • char s1[len + 1]; 报错说需要常量?
  • 【Linux】CentOS-6.8超详细安装教程
  • 【Java 进阶篇】MySQL启动与关闭、目录结构以及 SQL 相关概念
  • Android 11.0 mt6771新增分区功能实现一
  • LiveData简单使用
  • 手动实现Transformer
  • leetcode456 132 Pattern
  • WordPress外贸建站Astra免费版教程指南(2023)
  • Vue之ElementUI实现登陆及注册