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

习题5.6 “数学黑洞“

"数学黑洞":任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍为一个自然数。重复进行上述运算,会发现一个神秘的数。

//************************************************
//* Source Name: ChapterFive_ExerciseSix.cpp
//* Founction  : Mathematical black holes
//* Author	   : Skyera
//* Create Time	   : 2025-7-25
//* Modify	   : 
//* Modify Time:
//************************************************
#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
// 将数字分解为单个数字
vector<int> getDigits(int num)
{vector<int> digits;// 处理特殊情况:如果是0,确保有4个0if(num == 0){for(int i = 0; i < 4; i++){digits.push_back(0);}return digits;}// 提取每个位的数字while(num > 0){digits.push_back(num % 10);num /= 10;}// 确保有4个数字(补0)while(digits.size() < 4){digits.push_back(0);}return digits;
}// 计算下一步的数字
int nextNumber(int num)
{vector<int> digits = getDigits(num);// 排序得到最大数和最小数sort(digits.rbegin(), digits.rend()); // 降序排列int maxNum = digits[0] * 1000 + digits[1] * 100 + digits[2] * 10 + digits[3];sort(digits.begin(), digits.end());int minNum = digits[0] * 1000 + digits[1] * 100 + digits[2] * 10 + digits[3];// 输出当前步骤信息cout << setw(4) << setfill('0') << maxNum << '-'<< setw(4) << setfill('0') << minNum << '='<< maxNum - minNum << endl;return maxNum - minNum;
}// 输出当前步骤信息
void findBlackHole(int num)
{// 检查是否为4位数字if(num < 1000 || num > 9999){cout << "请输入一个4位自然数!" << endl;return; }// 检查是否所有数字都相同(如1111)vector<int> digits = getDigits(num);bool allSame = true;for(int i = 0; i < 4; i++){if(digits[i] != digits[0]){allSame = false;break;}}if(allSame){cout << "输入的数字各位都相同,结果将是0!" << endl;return;}cout << "计算过程:" << endl;int current = num;int steps = 0;// 循环计算直到得到6174while(current != 6174){current = nextNumber(current);steps++;// 防止意外的无限循环if(steps > 100){cout << "超过最大计算步骤,可能出现异常" << endl;return;}}cout << "经过" << steps << "步,得到数学黑洞" << current << endl;
}
int main()
{int num;cout << "请输入一个自然数(各位数字不能相同):";cin >> num;findBlackHole(num);return 0;
}

http://www.lryc.cn/news/600104.html

相关文章:

  • PHP插件开发中的一个错误:JSON直接输出导致网站首页异常
  • 纸板留声机:用ESP32和NFC打造会唱歌的复古装置
  • 手语式映射:Kinova Gen3 力控机械臂自适应控制的研究与应用
  • 秒收蜘蛛池解析机制的原理
  • PPIO上线阿里旗舰推理模型Qwen3-235B-A22B-Thinking-2507
  • ATR2652SGNSS全频段低噪声放大器
  • PostgreSQL对象权限管理
  • GPU 驱动安装升级测试
  • [NPUCTF2020]ReadlezPHP
  • CSS 盒子模型学习版的理解
  • C语言第 9 天学习笔记:数组(二维数组与字符数组)
  • ODFM(正交频分复用)系统中加入汉明码(Hamming Code)的主要目的是增强抗误码能力,通过**前向纠错(FEC)**机制提高传输可靠性
  • KNN算法:从原理到实战全解析
  • Kubernetes深度解析:企业级容器编排平台的核心实践
  • 内存 管理
  • LeetCode 233:数字 1 的个数
  • ACL:访问控制列表
  • 大数据中心——解读60页IDC云数据中心机房运维服务解决方案【附全文阅读】
  • MMRotate ReDet ReFPN 报错 `assert input.type == self.in_type`
  • Linux的磁盘存储管理实操——(下二)——逻辑卷管理LVM的扩容、缩容
  • ComfyUI中运行Wan 2.1工作流,电影级视频,兼容Mac, Windows
  • 一些常见的网络攻击方式
  • 与 TRON (波场) 区块链进行交互的命令行工具 (CLI): tstroncli
  • 关闭chrome自带的跨域限制,简化本地开发
  • 【Chrome】下载chromedriver的地址
  • 中国航天集团实习第一周总结
  • 低速信号设计之 SWD 篇
  • 随机抽签服务API集成指南
  • python学习DAY22打卡
  • 如何评估一个RWA项目的可信度?关键指标解析