《平衡数》 题解

3297:【例50.3】 平衡数《信息学奥赛一本通编程启蒙(C++版)》 平衡数:如果正整数 x 的每一位数字 d 恰好在 x 中出现了 d 次,则认为 x 是平衡数。对于百位数 d=1,其中 1 在 122 中总共出现了 1 次,符合条件;对于十位数 d=2,其中 2 在 122 中总共出现了 2 次,符合条件;对于个位数 d=2,其中 2 在 122 中总共出现了 2 次,符合条件;现在给出两个正整数l,r(l≤r),请帮忙求出l∼r中所有平衡数的和。输入共一行,两个以空格隔开的正整数 l,r(1≤l≤r≤10000)。输出共一行,一个整数,表示l∼r 中所有平衡数的和。 阅读详情

目录

题目描述
输入描述
输出描述
解析
完整代码

描述

平衡数:如果正整数 x 的每一位数字 d 恰好在 x 中出现了 d 次,则认为 x 是平衡数。例如 x=122,其中

对于百位数 d=1,其中 1 在 122 中总共出现了 1 次,符合条件;

对于十位数 d=2,其中 2 在 122 中总共出现了 2 次,符合条件;

对于个位数 d=2,其中 2 在 122 中总共出现了 2 次,符合条件;

因为 122的每一位都符合条件,所以 122是平衡数。

现在给出两个正整数l,r(l≤r),请帮忙求出l∼r中所有平衡数的和。

输入描述

输入共一行,两个以空格隔开的正整数 l,r(1≤l≤r≤10000)。

输出描述

输出共一行,一个整数,表示l∼r 中所有平衡数的和。

用例输入 1 

1 25

用例输出 1 

23

来源

http://bas.ssoier.cn:8086/problem_show.php?pid=3297 数的存储与组织

最近时间比较紧,更新属实有点慢,题解就先简单应付一下吧,愿大家原谅^_^

这题一定要理解题意,对后面有很大帮助。

根据题目,我们得知平衡数的定义为:一个数x的每个数位d在x中出现了d次。如果还是读不明白,那就可以借助题目给的例子理解。

下面是具体思路加代码:

#include <bits/stdc++.h>
using namespace std;
bool phs(int x){//计算平衡数
    int b=0;//计算位数
    int a=x;//辅助变量b
    //用while循环来提前计算它的位数
    while(a>0){
        b++;//累加
        a/=10;
    }
    int y=x,z=x;//辅助变量,以后有用
    int sum=0;//用于计算x中出现了多少次
    int cnt=0;//累计符合平衡数条件的位数
    while(x>0){
        while(y>0){
            if(x%10==y%10)sum++;//计算出现的次数
            y/=10;
        }
        if(sum==x%10)cnt++;//判断恰好在x中出现了x%10次
        x/=10;
        y=z;//注意细节,这里的y要更新
        sum=0;//注意归零
    }
    return cnt==b;//判断是否每一位都满足条件
}
int main() {
    int l,r,sum=0;
    cin>>l>>r;
    for(int i=l;i<=r;i++){
        sum+=(phs(i)==true?i:0);//三目运算符,逻辑为:如果i为平衡数,那么sum加上i,否则就加上0
    }
    cout<<sum;
 return 0;
}

结束了!

对了,忘说了一句话:

要想c++成绩好,就来jiabei小课堂。

还有,点我主页,看我简介,别给那三个人点赞就完了

【算法实战】C++解“平衡数”问题:从信息学奥赛真题到编程思维训练 本文以信息学奥赛经典题目“平衡数”为例,详细讲解了如何运用C++从暴力枚举思路入手解决算法问题。文章深入剖析了数字拆解、统计与判断的核心逻辑,并提供了完整的代码实现与逐行解读,旨在通过具体案例训练编程思维,帮助读者掌握从问题分析到代码实现的完整方法,特别适合编程启蒙与算法入门学习。 阅读详情

相关推荐

CCF-CSP第35次认证第五题——木板切割【C++满分题解;平衡树set,线段树,分块预处理,位图;区间合并、懒更新与分治、位运算优化】

这道题主要难点在于对动态切割后木板区间的高效维护与查询,需要综合使用线段树、集合(set)和按块预处理等数据结构和算法技巧。解决时要先理解题目对“颜色段数”与“不同颜色个数”的要求,然后设计合适的数据结构来支持动态更新。针对特殊的最坏情况(颜色全不同)进行常数优化,也是防止超时的关键。总体来说,这道题考查了数据结构的综合应用和对复杂区间操作的思考能力,是一道较为综合的题目。8-10满足特殊性质 B:𝑐𝑖=𝑖;针对这个性质对题解进行优化,即可拿到剩下15分。

insouciant_22的博客 1468

【例50.3】 平衡数题解

平衡数:如果正整数 x的每一位数字 d 恰好在 x中出现了 d 次,则认为 x 是平衡数。平衡数:如果正整数 x 的每一位数字 d恰好在 x 中出现了 d 次,则认为 x是平衡数。例如 x=122,其中。对于十位数 d=2,其中 22 在 122122 中总共出现了 22 次,符合条件;对于百位数 d=1,其中 1 在 122中总共出现了 1 次,符合条件;对于十位数 d=2,其中 2 在 122中总共出现了 2 次,符合条件;对于个位数 d=2,其中 2 在 122中总共出现了 2 次,符合条件;

LBZ的博客 1267

题解:AtCoder AT_awc0101_e Choosing Flowerbed Intervals

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。高橋想选择一段连续的花来创建一个展览区。作为展览区选中的区间。中花的最大高度与最小高度之差必须不超过。为了让展览区看起来美观,高橋想选择一个。高橋负责管理一个花坛。求同时满足上述两个条件的区间。有一个记录的"品种编号"朵花,从左到右编号为。朵花的连续序列(包含。的情况,即仅一朵花)。本文分享的必刷题目是从。

团爸讲算法 140

C++实现平衡数的判断与求和

[题目描述] [Code: 基本上是暴力解法+部分优化细节] #include <iostream> #include <string> #include <sstream> using namespace std; class Solution { public: bool match(int n) { //平衡数匹配 //int to string /*ostringstream oss; oss << n; strin.

留恋单行路_Blog 1245

题解:洛谷 P8900 [USACO22DEC] Barn Tree S(废)

为使他的奶牛们满意,Farmer John 想移动这些干草,使得每个牛棚都有相同数量的干草捆。他可以选择任何一对由一条道路连接的牛棚,并命令他的农场工人将不超过第一个牛棚中干草捆数量的任意正整数个干草捆从第一个牛棚移动到第二个牛棚。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。每条命令的格式应为三个空格分隔的正整数:出发牛棚,目标牛棚,以及从出发牛棚移动到目标牛棚的干草捆数量。输出命令的最小数量,然后输出该数量的命令序列,每行输出一条命令。

团爸讲算法 174

VC Spyglass CDC验证避坑指南:如何正确配置同步复位信号(实验二重点解析)

本文深入解析VC Spyglass CDC验证中同步复位信号的正确配置方法,通过实验二案例详细展示错误配置的典型表现及修正过程。文章提供同步复位的最佳实践方案,包括约束文件修改指南、验证流程优化建议和高级调试技巧,帮助工程师有效避免CDC验证中的常见陷阱。

rock5的博客 678

平衡数

平衡数的定义:将一个数分成左右两部分,分别成为2个新数。左右不分必须满足: 1、左边和右边至少存在一位 2、左边数的每一位相乘如果等于右边数每一位相乘 则这个数称为平衡数。 如:1221这个数,分成12和21,1*2 = 2*1,是个平衡数。 1236这个数,分成123和6,1*2*3 = 6,是个平衡数。 输入:一个正整数(int范围) 输出:如果是平衡数输出“YES”,否

Ryan的博客 2万+

STGCN+YOLOV8行为分类

使用关节点追踪网络获取关节点数据,以yolo-v8网络为例,获取2D关节点数据。此次实验采用KTH动作识别数据集,包含人步行、慢跑、跑步、拳击、挥手和拍手等动作。

SDADASDAF的博客 3889

【2023年莆田市第三期C++专项选拔第三轮考试试题(初中组)】 平衡数 题解

【2023年莆田市第三期C++专项选拔第三轮考试试题(初中组)】 平衡数 题解

qq_50807568的博客 422

ControlCAN.dll开发适配USBCAN_E/2E_U设备

摘要:本文提供了USBCAN_E/2E_U设备的配置指南:1)安装专用驱动;2)获取最新的ControlCAN.dll文件;3)修改VCI调用顺序,新增VCI_SetReference函数设置波特率;4)使用工具计算波特率配置值,并给出了常见波特率对应的代码参考值(如500K对应0x060007)。配置过程强调使用特定工具计算精确的波特率参数,并提供了相关软件下载链接。

weixin_43969033的博客 387

基于阻抗控制的工业机器人轨迹跟踪系统 Simulink/Simscape 仿真

  本文是对文献 [1] 的复现。 关于阻抗控制   阻抗控制的提出可以追溯到 1984 年,Neville Hogan 在 American Control Conference 发表的 Impedance Control:An Approach to Manipulation ,次年,Hogan N. 又在 Journal of Dynamic Systems Measurement and Control-transactions of The Asme 发表了阻抗控制经典三部曲 —— Imped.

-贝塔- 的博客 2万+

codeforces-go 题解实战:LeetCode 2048「下一个数值平衡数」的枚举与打表二分求解

本文以 codeforces-go 仓库中 [leetcode/weekly/264/b/old.md](https://link.gitcode.com/i/b19ce2c09c164432f5003bb68310f29d) 为主体,系统讲解 LeetCode 2048「下一个数值平衡数」(第 264 场周赛第 2 题)的两种标准解法——枚举法与打表二分法,并结合仓库内 [b.go](https

gitblog_01029的博客 185

Unity3D 简单水面shader的实现

实现思路 今天来实现一个简单的水面效果。水面的话主要是以下几个效果叠加 1.水面的动态波浪效果,我们这里使用最简单的正弦波加上法线贴图来模拟。如果想要更精确的波动效果可以考虑使用Gerstner波 2.不同水深颜色不同的效果,使用该顶点深度和顶点坐标的差值来计算深度,然后映射到颜色 3.浪涌效果,还是根据顶点深度和顶点坐标的差值来计算深度,然后叠加上一层浪涌 4.折射效果,用grabpass,采样之后进行偏移,最后叠加上去。 代码实现 首先是顶点位移函数,使用正弦函数代入顶点的x坐标和z坐标来算,因为这里写

o83290102o5的博客 1万+

3297:【例50.3】 平衡数

该程序计算给定区间[l,r]内特定数字的和。这些数字存储在预定义的数组a中,包括1,22,122,212等特殊数值。程序首先读取输入的l和r,然后遍历数组a,累加所有落在[l,r]范围内的数字。最后输出这些数字的总和。

lin4591321的博客 152

Python开发MCP Client

全部例子只是MCP Client访问MCP Server的过程,那么这样其实就失去了MCP协议的创建的初衷,和大模型集成后才能发挥MCP最大的作用。

Criss@陈磊 2971

从win系统远程使用服务器中的nsight system、nsight compute

本文介绍了如何在Windows系统中远程使用服务器上的Nsight System和Nsight Compute工具。主要内容包括:1)双系统同步安装相同版本的Nsight工具,配置环境变量;2)命令行生成profile文件或直接运行分析;3)Windows远程连接服务器的配置方法;4)解决权限问题的具体方案,如修改文件夹权限或调整NVIDIA驱动配置。文章提供了详细的安装步骤和常见问题解决方案,适用于需要进行GPU性能分析和调试的开发人员。

Justinyh的博客 401

2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组真题

2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组部分真题和题解分享。蓝桥杯2023年第十四届省赛真题-平方差 思路题解 蓝桥杯2023年第十四届省赛真题-更小的数 思路题解 蓝桥杯2023年第十四届省赛真题-颜色平衡树 思路题解 蓝桥杯2023年第十四届省赛真题-买瓜 思路题解

Stephen_Curry___的博客 9641

Mac电脑安装burp suite2024版本记录

下载最新版本burpsuitloader-XXX-all.jar,改名为burpsuitloader.jar。目录下,修改vmoptions.txt文件,新增以下内容,如果keygen不是这个名称的话,需要修改。,点击license左侧的copy复制它,然后手动从启动台启动burpsuite。,复制如下命令到终端即可(要加双引号,不然目录中空格会导致命令截断)再复制激活响应信息到burpsuite中即可激活。后续运行burp直接从启动台运行即可。将如下框的信息复制到激活器中。输入后下一步,点击手动激活。

墨痕诉清风的博客 899

P3369 【模板】普通平衡树

您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为x的数5. 求x的前驱(前驱定义为小于x,且最大的数)6. 求x的后继(后继定义为大于x,且最小的数)第一行为n,表示操作的个数,下面n行每行有两个数opt和x,opt表示操作的序号(1<=opt<=6)对于操作3,4,5,6每行输出一个数,表示对应答案10。

swowi的博客 397

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【bzoj3224】普通平衡树

如何让你遇见我,在我最美丽的时刻。

zyf2000 5161

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

黑白方块

【代码】 黑白方块。

gyvfhv的博客 291

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Codeforces 863 简要题解

文章目录A题B题C题D题E题F题G题 传送门 简要题解?因为最后一题太毒不想写了所以其实是部分题解。。。 A题 传送门 题意简述:给你一个数,问你能不能通过加前导000使其成为一个回文数。 思路:直接模拟。 代码: #include<bits/stdc++.h> #define ri register int using namespace std; const int rlen=1...

苟为蒟蒻又何妨 486

GJOI 5.15 题解

一排喷泉有n个喷头,初始时全部处于“开启”状态。每次操作可以改变连续k个喷头的状态(开启变关闭,关闭变开启)。经过若干次操作后,最多能形成多少种不同的喷泉状态?由于答案可能很大,请对1097取模。1≤k≤n≤105。

m0_60506105的博客 997

414. 第三大的数-LeetCode(C++)

每遍历一个数,就将其插入有序集合,若有序集合的大小超过 3,就删除集合中的最小元素。这样可以保证有序集合的大小至多为 3,且遍历结束后,若有序集合的大小为 3,其最小值就是数组中第三大的数;若有序集合的大小不足 3,那么就返回有序集合中的最大值。对于浮点数,C++ 标准库提供了一些宏来表示浮点数类型能表示的最小正规范化值、最大值、和非规范化(非零的最小值)等。容器中的元素是唯一的,并且是自动排序的。中的元素不能重复,如果尝试插入一个已存在的元素,该元素不会被加入到。中的元素是按照升序自动排序的。

woshihlf的博客 1143

xqx的做题记录

1.一直在做题,一直在总结,但是太凌乱了,看别人都有各种仓库或者文档什么的,自己什么都有没有。 2.做题完了应该反思总结,在归类到各个类别下。题解给出连接,这里面主要写总结。 1.正则 5906. 句子中的有效单词数 竞赛的第一道题,简单题,折戟了。完了看大佬的题解,一个正则就可以搞定,直呼佩服。 题解:java 参考正则 2.二分查找 2048. 下一个更大的数值平衡数 针对优先数目的特殊数,要么暴力查找,要么打表二分, leetcode题解:java 正常解法和参考的打表二分 ...

未来与一生 148

HDU3709 Balanced Number —— 数位DP

题目链接:https://vjudge.net/problem/HDU-3709 Balanced Number Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 6615Accepted Submission(...

alince20008的博客 140
上一篇: 《【CSP-J2020 入门】优秀的拆分( power)》 题解
下一篇: 博客停更通知
jiabei2012
博客等级 码龄3年 566粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值