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

蓝桥杯每日真题 - 第22天

题目:(卡片)

题目描述(12届 C&C++ B组B题)

解题思路:

该问题要求用数字卡片从 1 开始拼出整数,直到某一时刻不能拼出时停止。要确定拼到哪个最大整数,需要统计 每个数字“1”被用过的次数,直到卡片中“1”不够为止。

  1. 初步分析:

    • 从数字 1 开始,每个整数可以通过其十进制表示形式拆分成各个位上的数字。

    • 每次使用的数字“1”数量会随着拼接的整数不断增加。

    • 终止条件是“1”的使用次数达到或超过 2021。

  2. 具体步骤:

    • 用一个计数器 sum 统计数字“1”的使用次数。

    • 逐一检查从 1 开始的整数,逐位提取其中的数字,如果是“1”,则增加计数器。

    • 当计数器达到或超过 2021 时,停止循环,当前整数即为结果。

  3. 实现方式:

    • 使用两层循环:

      • 外层循环从 1 开始逐一增加数字,直到满足终止条件。

      • 内层循环提取当前数字的每一位,并判断是否为“1”。

代码实现(C语言):

#include <stdio.h>
int main(void)
{
  int i, j, sum = 0;

  // 从 1 开始拼数字
  for (i = 1;; i++) 
  {
    // 将当前数字 i 的每一位拆分并检查是否是 1
    for (j = i; j != 0; j /= 10)
      if (j % 10 == 1) // 如果当前位是 1
        sum++;
        
    // 当统计的 1 的数量达到目标时,停止循环
    if (sum >= 2021)
      break;
  }

  // 输出最后拼出的最大数字
  printf("%d", i);
  return 0;
}

得到运行结果:

难度分析

⭐️⭐️⭐️

总结

  • 算法逻辑清晰,简单易懂。

  • 逐位处理数字,可以有效地统计目标数字的出现次数。


http://www.kler.cn/a/410167.html

相关文章:

  • 【Python】构建事件驱动架构:用Python实现实时应用的高效系统
  • 中班幼儿户外运动游戏活动现状及策略研究
  • 数据集-目标检测系列- 花卉 玫瑰 检测数据集 rose >> DataBall
  • 3349、检测相邻递增子数组 Ⅰ
  • 文小言1:
  • C++(进阶) 第1章 继承
  • Wireshark抓取HTTPS流量技巧
  • 量子生成对抗网络
  • docker镜像、容器、仓库介绍
  • Flutter:启动屏逻辑处理01:修改默认APP启动图标
  • 大数据实战——MapReduce案例实践
  • Node.js的http模块:创建HTTP服务器、客户端示例
  • uniapp+vue2重新进入小程序就清除缓存,设备需要重新扫码
  • 实现飞2米高的框架(c语言版)
  • 网络渗透测试工具推荐与简介
  • MySQL获取数据库内所有表格数据总数
  • 解决getSubject is supported only if a security manager is allowed
  • HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)习惯推荐方案开发者测试
  • 计算机网络——第3章 数据链路层(自学笔记)
  • 机器学习中数据集Upsampling和Downsampling是什么意思?中英文介绍
  • Spring Boot 实战:基于 Validation 注解实现分层数据校验与校验异常拦截器统一返回处理
  • IDEA 2024安装指南(含安装包以及使用说明 cannot collect jvm options 问题一)
  • PostgreSQL 中约束Constraints
  • Oracle 数据库 23ai 新特性: Schema Annotations
  • react中的useCallback 有什么作用?
  • SQL Server数据库日志(ldf文件)清理