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

C题目训练【三连击】

文章目录

  • 题目描述
  • 方法思路
  • 解决代码
  • 代码解释


题目描述

将 1,2,…,9 共 9 个数分成 3 组,分别组成 3 个三位数,且使这 3 个三位数构成 1:2:3 的比例,试求出所有满足条件的 3 个三位数。


方法思路

  1. 遍历可能的第一个数:第一个数的范围从100到333,因为其三倍必须不超过999。
  2. 计算后续数:根据比例关系,计算第二个数为第一个数的两倍,第三个数为第一个数的三倍。
  3. 检查数字有效性:确保这三个数都是三位数,且不包含0。同时,所有数字1到9必须恰好各出现一次。
  4. 输出结果:将满足条件的三个数按升序输出。

解决代码

#include <stdio.h>int main() {// 遍历所有可能的第一个三位数,范围从100到333for (int a = 123; a <= 333; a++) {// 计算第二个和第三个数int b = 2 * a;int c = 3 * a;// 初始化一个数组来计数每个数字的出现次数int count[10] = {0};int num = a;// 分解第一个数的每一位并计数while (num) {count[num % 10]++;num /= 10;}num = b;// 分解第二个数的每一位并计数while (num) {count[num % 10]++;num /= 10;}num = c;// 分解第三个数的每一位并计数while (num) {count[num % 10]++;num /= 10;}// 检查数字1到9是否每个恰好出现一次int valid = 1;for (int i = 1; i <= 9; i++) {if (count[i] != 1) {valid = 0;break;}}// 如果满足条件,输出结果if (valid) {printf("%d %d %d\n", a, b, c);}}return 0;
}

代码解释

  1. 遍历第一个数a:从123到333,确保其三倍不超过999。
  2. 计算b和c:b为a的两倍,c为a的三倍。
  3. 检查0的存在:如果a、b或c的任何位为0,跳过当前循环。
  4. 数字频率统计:使用数组count统计每个数字的出现次数。
  5. 验证数字使用:检查1到9每个数字是否恰好出现一次。
  6. 输出结果:如果满足条件,输出a、b和c的值。
http://www.xdnf.cn/news/19830.html

相关文章:

  • Vue3 + Ant Design Vue 实现多选下拉组件(支持分组、搜索与标签省略)
  • Ollama大模型 本地部署+使用教程
  • 【FastDDS】Layer DDS之Domain ( 05-Creating a DomainParticipant)
  • lesson53:CSS五种定位方式全解析:从基础到实战应用
  • GEO服务商推荐:移山科技以划时代高精尖技术引领AI搜索优化新纪元
  • C++ 5
  • 使用 Acme.sh 获取和管理免费 SSL 证书
  • 性能测试-jmeter8-脚本录制
  • 网络通信与协议栈 -- TCP协议与编程
  • [Java]PTA:求最大值
  • 财务文档处理优化:基于本地运行的PDF合并解决方案
  • 入行FPGA选择国企、私企还是外企?
  • Ansible高效管理大项目实战技巧
  • 【Python】数据可视化之点线图
  • Android 渐变背景色绘制
  • Git在idea中的实战使用经验(二)
  • 基于SpringBoot的宠物咖啡馆平台
  • 在DDPM(扩散模型)中,反向过程为什么不能和前向一样一步解决,另外实际公式推导时反向过程每一步都能得到一个预测值,为什么还要一步一步的推导?
  • 前端-Vue的生命周期和生命周期的四个阶段
  • 缠论笔线段画线,文华财经期货指标公式,好用的缠论指标源码
  • 特斯拉三代灵巧手:演进历程与核心供应链梳理
  • Spring AI调用sglang模型返回HTTP 400分析处理
  • 前端学习 10-2 :验证中的SV
  • Qt使用Maintenance添加、卸载组件(未完)
  • Java 技术支撑 AI 系统落地:从模型部署到安全合规的企业级解决方案(四)
  • 嵌入式学习 51单片机(2)
  • 【C++】string类完全解析与实战指南
  • centos 压缩命令
  • (二)文件管理-基础命令-mkdir命令的使用
  • Linux应用(1)——文件IO