AcWing 338. 计数问题

文章目录

  • 题目描述
  • 问题分析
  • 代码

题目描述

AcWing 338.计数问题
给定两个整数 a a a b b b, 求 a a a b b b中所有数字中0~9的出现次数
数据范围:
0 < a, b < 100000000

输入格式

输入包含多组测试数据。

每组测试数据占一行,包含两个整数 a
和 b。
当读入一行为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

问题分析

这道题让我们求一个区间的数出现的次数,那么我们可以利用前缀和的思想求得从 1 ~ n 的 某个数x的出现次数,只有用区间末端点减区间的前端点的前一个,就可以得到一个区间某个数出现的次数设计一个cout(n, x) 函数。

那我们要怎么求这个范围数的出现次数呢,可能你会想到暴力枚举,从1 ~ n一次枚举x出现了几次,最后将答案累加返回,其实不用这样。
我们只需要知道这个区间的最大值记作abcdefg,这样我们分析这一个数中x出现的位置从而找到在这个位置的所有情况即可
但是有个特殊情况当x = 0的情况下:
这时只会影响当前三位为000~abc的情况,由于要统计0的个数所以如果放任前导零的存在就会影响答案的结果,而x为其他情况即使有前导零对结果也不会造成影响
这时就要满足当求第k位为0是要保证前面不能全为0,所以000~abc 中会少000这一种情况变成001 ~ abc这里虽然有前导零但是这些前导零是已经在 k ′ k^{'} k小于k时就求过了的这里只是一种表现形式而已不会对答案造成影响

代码

在这道一种由于要知道一个数第几位前面的数,这位数和右边的数所以要熟练掌握/ %来进行

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>

using namespace std;

int split(int x, int k)
{
    int p = pow(10, k - 1);
    printf("左边的数:%d\n", x / p / 10);
    printf("从右往左第k位的数:%d\n", x / p % 10);
    printf("右边的数:%d\n", x % p);
}

int main()
{
    int x, k;
    scanf("%d%d", &x, &k);
    split(x, k);
    return 0;
}

执行结果

输入:123456789   3
输出:
左边的数:123456
第k位的数:7
右边的数:89


输入:123456789   4
输出:
左边的数:12345
从右往左第k位的数:6
右边的数:789

实现

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>

using namespace std;

const int N = 1e8 + 10;
int a, b;

int dgt(int x)//计算x这个数有多少位
{
    int res = 0;
    while (x) res ++, x /= 10;
    return res;
}

int cnt(int i, int x)
{
    int res = 0, n = dgt(i);
    for (int j = 1; j <= n; j ++) // 枚举j在i的第几位从后向前枚举
    {
        // p表示j后面后面有多少数
        int p = pow(10, j - 1), dl = i / p / 10, dj = i / p % 10, dr = i % p;
        
        //当第j位要查0的情况下,即j这里就是0了,那么就不允许前面都是0,这是非法的所以要剔除
        if (!(x || dl)) break;
        // p表示从后往前第j个位置有多少位10
        // dl是前面的数 dj是第j个位置的数 dr是后面的数
        if (x == 0 && dl) res += (dl - 1) * p;// 当要查的是0的时候就不能允许前导0的存在去掉000的情况
        if (x) res += dl * p;// 这就是当前面是000 ~ abc - 1的情况
        
        //下面就是当前面是abc时此时可能是最外层会被限制
        if ((dj == x)) res += dr + 1;
        if ((dj > x)) res += p;// 没有限制000 ~ 999
    }
    return res;
}

int main()
{
    while (cin >> a >> b && a | b)
    {
        if (a > b) swap(a, b);
        for (int i = 0; i <= 9; i ++)
        {
            printf("%d ", cnt(b, i) - cnt(a - 1, i));
        }
        puts("");
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/245131.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI会干掉美图秀秀们吗?

网上流传着这样一个传说&#xff0c;亚洲有三大“邪术”&#xff0c;韩国整容术、日本化妆术&#xff0c;还有震惊世界的中国PS 术。虽然是网友的戏称&#xff0c;但也反映了PS美图技术在国内盛行一时。 而说起美图技术就不得不提到美图公司&#xff0c;但美图公司近些年的日子…

影视动画行业发展现状与方向:AI技术推动动画工业化体系新变革

工业化体系 是国产动画强国的必经之路 中国动画的百年历程不仅是创作者们展现艺术才华的历程&#xff0c;也是一代代中国动画人不懈追求动画工业体系建设的历程。 为什么现在的中国动画需要建立工业化体系呢&#xff1f; 举个例子&#xff0c;在建立工业化体系之前&#xff…

推荐一个小而全的第三方登录开源组件

大家好&#xff0c;我是 Java陈序员。 我们在企业开发中&#xff0c;常常需要实现登录功能&#xff0c;而有时候为了方便&#xff0c;就需要集成第三方平台的授权登录。如常见的微信登录、微博登录等&#xff0c;免去了用户注册步骤&#xff0c;提高了用户体验。 为了业务考虑…

网络基础(十):DHCP原理与配置

目录 1、DHCP的概念 2、使用DHCP的优势 3、DHCP的分配方式 4、可分配的地址信息 5、DHCP的工作原理&#xff08;租约过程&#xff09; 6、DHCP动态配置主机地址&#xff08;使用eNSP软件配置&#xff09; 1、DHCP的概念 DHCP(Dynamic HostConfiguration Protocol&#x…

SLAM学习——相机模型(针孔+鱼眼)

针孔相机模型 针孔相机模型是很常用&#xff0c;而且有效的模型&#xff0c;它描述了一束光线通过针孔之后&#xff0c;在针孔背面投影成像的关系&#xff0c;基于针孔的投影过程可以通过针孔和畸变两个模型来描述。 模型中有四个坐标系&#xff0c;分别为world&#xff0c;c…

vite(一)——基本了解和依赖预构建

文章目录 一、什么是构建工具&#xff1f;1.为什么使用构建工具&#xff1f;2.构建工具的作用&#xff1f;3.构建工具怎么用&#xff1f; 二、经典面试题&#xff1a;webpack和vite的区别1.编译方式不同2.基础概念不同3.开发效率不同4.扩展性不同5.应用场景不同6.总结&#xff…

孩子都能学会的FPGA:第三十一课——用FPGA实现SPI主机发送数据

&#xff08;原创声明&#xff1a;该文是作者的原创&#xff0c;面向对象是FPGA入门者&#xff0c;后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门&#xff0c;作者不光让大家知其然&#xff0c;还要让大家知其所以然&#xff01;每个工程作者都搭建了全自动化的仿…

【Python】conda镜像配置,.condarc文件详解,channel镜像

1. conda 环境 安装miniconda即可&#xff0c;Miniconda 安装包可以到 http://mirrors.aliyun.com/anaconda/miniconda/ 下载。 .condarc是conda 应用程序的配置文件&#xff0c;在用户家目录&#xff08;windows&#xff1a;C:\users\username\&#xff09;&#xff0c;用于…

SAP PP 配置学习(一)

物料主数据 一、定义物料类型属性 未检查的外部号分配&#xff1a;这是指如果用户自己输入的物料编码超出了定义的编码范围&#xff0c;是否会提示错误。 勾上代表不检查。 用户部门&#xff1a;这里勾选需要进行维护的视图&#xff0c;如果不选择&#xff0c;那么在新建和维…

苍穹外卖项目笔记(12)— 数据统计、Excel报表

前言 代码链接&#xff1a; Echo0701/take-out⁤ (github.com) 1 工作台 需求分析和设计 产品原型 工作台是系统运营的数据看板&#xff0c;并提供快捷操作入口&#xff0c;可以有效提高商家的工作效率 接口设计 ① 今日数据接口&#xff1a; ② 订单管理接口&#xff1…

智慧灯杆技术应用分析

智慧灯杆是指在传统灯杆的基础上&#xff0c;通过集成多种先进技术实现城市智能化管理的灯杆。智慧灯杆技术应用的分析如下&#xff1a; 照明功能&#xff1a;智慧灯杆可以实现智能调光、时段控制等功能&#xff0c;根据不同的需求自动调节照明亮度&#xff0c;提高照明效果&am…

论文阅读《Parameterized Cost Volume for Stereo Matching》

论文地址&#xff1a;https://openaccess.thecvf.com/content/ICCV2023/papers/Zeng_Parameterized_Cost_Volume_for_Stereo_Matching_ICCV_2023_paper.pdf 源码地址&#xff1a;https://github.com/jiaxiZeng/Parameterized-Cost-Volume-for-Stereo-Matching 概述 现有的立体匹…

SpringBoot整合Lucene实现全文检索【详细步骤】【附源码】

笑小枫的专属目录 1. 项目背景2. 什么是Lucene3. 引入依赖&#xff0c;配置索引3.1 引入Lucene依赖和分词器依赖3.2 表结构和数据准备3.3 创建索引3.4 修改索引3.5删除索引 4. 数据检索4.1 基础搜索4.2 一个关键词&#xff0c;在多个字段里面搜索4.3 搜索结果高亮显示4.4 分页检…

数组相关的题目

数组相关的题目 128. 最长连续序列 128. 最长连续序列 题目&#xff1a;给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 很容易就能想到要先排序&#xff0c;再进行后续的处理。有一个坑&a…

Java集合--Map

1、Map集合概述 在Java的集合框架中&#xff0c;Map为双列集合&#xff0c;在Map中的元素是成对以<K,V>键值对的形式存在的&#xff0c;通过键可以找对所对应的值。Map接口有许多的实现类&#xff0c;各自都具有不同的性能和用途。常用的Map接口实现类有HashMap、Hashtab…

交易历史记录20231206 记录

昨日回顾&#xff1a; select top 10000 * from dbo.CODEINFO A left join dbo.全部&#xff21;股20231206010101 B ON A.CODE B.代码 left join dbo.全部&#xff21;股20231206CONF D on A.CODED.代码left join dbo.全部&#xff21;股20231206 G on A.CODEG.代码 left…

铭飞CMS list 接口 SQL注入漏洞复现

0x01 产品简介 铭飞CMS是一款基于java开发的一套轻量级开源内容管理系统,铭飞CMS简洁、安全、开源、免费,可运行在Linux、Windows、MacOSX、Solaris等各种平台上,专注为公司企业、个人站长快速建站提供解决方案 0x02 漏洞概述 铭飞CMS在5.2.10版本以前list 接口处存在sql注入…

电子元器件介绍——电阻(一)

电子元器件 文章目录 电子元器件前言1.1电阻基本知识1.2电阻的作用1.3电阻的分类1.4 贴片电阻贴片电阻的规范、尺寸、封装 1.5 技术参数噪声&#xff1a; 1.6 电阻的失效 总结 前言 接下来我们就把常用的电子元器件全部介绍给大家&#xff0c;这一节是电阻&#xff0c;电容电感…

用提问的方式来学习:冯·诺伊曼体系结构与操作系统OS

学习冯诺伊曼体系结构之前&#xff0c;我们要本着两个问题来学习&#xff1a; 什么是冯诺伊曼体系结构&#xff1f;为什么要有冯诺伊曼体系结构&#xff1f; 一、冯诺伊曼体系结构 1. 什么是冯诺伊曼体系结构&#xff1f; 那我们就先来回答一下什么是冯诺伊曼体系结构&#x…

探索GameFi:区块链与游戏的未来融合

在过去的几年里&#xff0c;区块链技术逐渐渗透到各个领域&#xff0c;为不同行业带来了前所未有的变革。其中&#xff0c;游戏行业成为了一个引人注目的焦点&#xff0c;而这种结合被称为GameFi&#xff0c;即游戏金融。GameFi不仅仅是一个概念&#xff0c;更是一场区块链和游…