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

计数问题(数位DP)

题目大意:给定一个区间,求该区间内0 ~ 9出现的次数,多次询问,以0 0结束询问

测试用例:

输入:
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

 

#include <iostream>
#include <vector>
using namespace std;

int get(vector<int>& num, int l, int r) {
    int res = 0;
    for(int i = l; i >= r; i--) 
        res = res * 10 + num[i];
    return res;
}

int power10(int k) {
    int res = 1;
    while(k--)
        res *= 10;
    return res;
}

int count(int n, int x) {
    if(!n)  return 0;
    vector<int> num;
    while(n) {
        num.push_back(n % 10);
        n /= 10;
    }
    n = num.size();
    int res = 0;
    for(int i = n - 1 - !x; ~i; i--) {
        if(i < n - 1) {
            res += get(num, n - 1, i + 1) * power10(i);
            if(!x)  res -= power10(i);
        }
        if(num[i] == x) res += get(num, i - 1, 0) + 1;
        else if(num[i] > x)    res += power10(i);
    }
    return res;
}

int main() {
    int a, b;
    while(cin >> a >> b, a || b) {
        if(a > b)   swap(a, b);
        for(int i = 0; i <= 9; i++)
            cout << count(b, i) - count(a - 1, i) << " ";
        cout << endl;
    }
    return 0;
}

相关文章:

  • C/C++内存管理
  • 【软件测试】技术精选:Jmeter常见的几种报错
  • IDEA2023版本创建Sping项目只能勾选17和21,却无法使用Java8?(已解决)
  • qt使用qproperty在css中设置自定义的qobject类属性
  • 微服务保护
  • 【电子取证篇】汽车取证数据提取与汽车取证实例浅析(附标准下载)
  • YOLOv8改进 | 2023 | SCConv空间和通道重构卷积(精细化检测,又轻量又提点)
  • 外包干了4年,技术退步太明显了。。。。。
  • Java分布式全局唯一Id:id生成要求、为什么不用UUID、生成分布式雪花Id
  • Flask 快速入门
  • 鸿蒙(HarmonyOS)应用开发——构建页面(题目答案)
  • 主要分布式文件系统架构对比分析:GFS vs. Tectonic vs. JuiceFS
  • 从零开始训练一个ChatGPT大模型(低资源,1B3)
  • 【C++】期末复习题(一)
  • 25、pytest的测试报告插件allure
  • leetcode每日一题36
  • 聊聊 Jetpack Compose 的 “状态订阅自动刷新” -- mutableStateListOf
  • OpenCV Mat和Bitmap的转换
  • Linux篇之基于Centos的everything镜像搭建yum镜像源
  • SSM项目实战-mapper实现
  • 乌拉圭前总统何塞·穆希卡去世
  • 多家外资看好中国市场!野村建议“战术超配”,花旗上调恒指目标价
  • 第四届长三角国际应急博览会开幕,超3000件前沿装备技术亮相
  • 人民日报访巴西总统卢拉:“巴中关系正处于历史最好时期”
  • 茅台回应“茅台1935脱离千元价位带竞争”:愿与兄弟酒企共同培育理性消费生态
  • 甩掉“肥胖刺客”,科学减重指南来了