您的位置:首页 > 教育 > 培训 > 上海新任委书记_动态网站建站_商品推广软文800字_青岛官网优化

上海新任委书记_动态网站建站_商品推广软文800字_青岛官网优化

2025/5/24 10:17:48 来源:https://blog.csdn.net/weixin_74066588/article/details/144001121  浏览:    关键词:上海新任委书记_动态网站建站_商品推广软文800字_青岛官网优化
上海新任委书记_动态网站建站_商品推广软文800字_青岛官网优化

题目:(卡片)

题目描述(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 的每一位拆分并检查是否是 1for (j = i; j != 0; j /= 10)if (j % 10 == 1) // 如果当前位是 1sum++;// 当统计的 1 的数量达到目标时,停止循环if (sum >= 2021)break;}// 输出最后拼出的最大数字printf("%d", i);return 0;
}

得到运行结果:

难度分析

⭐️⭐️⭐️

总结

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com