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

gesp(二级)(8)洛谷:B3866:[GESP202309 二级] 数字黑洞

gesp(二级)(8)洛谷:B3866:[GESP202309 二级] 数字黑洞

在这里插入图片描述

题目描述

给定一个三位数,要求各位不能相同。例如, 352 352 352 是符合要求的, 112 112 112 是不符合要求的。将这个三位数的三个数字重新排列,得到的最大的数,减去得到的最小的数,形成一个新的三位数。对这个新的三位数可以重复上述过程。神奇的是,最终一定会得到 495 495 495

试试看,重新排列 352 352 352,得到的最大数为 532 532 532,最小数为 235 235 235,它们的差是 297 297 297;变换 297 297 297,得到 972 − 279 = 693 972-279=693 972279=693;变换 693 693 693 963 − 369 = 594 963-369=594 963369=594;变换 594 594 594 954 − 459 = 495 954-459=495 954459=495。因此,经过 4 4 4 次变换得到了 495 495 495

现在,输入的三位数,你能通过编程得出,这个三位数经过多少次变换能够得到 495 495 495 吗?

输入格式

输入一行,包含一个符合要求的三位数 N N N

输出格式

输出一行,包含一个整数 C C C,表示经过 C C C 次变换得到 495 495 495

样例 #1

样例输入 #1

352

样例输出 #1

4

AC代码(100分)

#include<bits/stdc++.h>
using namespace std;
//按题意模拟 
int n,a[4],cnt;
int main(){
	cin>>n;
	//模拟变换过程 
	while(n!=495){
		//记录n原来的值
		int tmp=n; 
		
		//将三位数的个位、十位、百位存到数组a中
		for(int i=1;i<=3;i++){
			a[i]=tmp%10;
			tmp/=10;
		} 
		
		//a数组升序排序
		sort(a+1,a+4);
		//求出最大值和最小值
		int x=a[3]*100+a[2]*10+a[1];//最大值 
		int y=a[1]*100+a[2]*10+a[3];//最小值
		//计算差
		n=x-y; 
		
		//统计次数
		cnt++; 
	} 
	//输出答案
	cout<<cnt; 
	return 0;
}

文末彩蛋:

点击王老师青少年编程主页有更多精彩内容


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

相关文章:

  • 云手机测评:云端赋能的智能移动新势力
  • 解决vscode ssh远程连接服务器一直卡在下载 vscode server问题
  • 5G 模组 初始化状态检测
  • 深耕灾备国产化,YashanDB与鼎甲科技联合推出“流式备份”解决方案
  • 黄历宜忌算法 API:黄道吉日 PHP 计算方法
  • ELK系列-(五)指标收集-MetricBeat(下)
  • 部署 K8s 1.28.2(一主两从)-亲测无坑
  • 基础设施即代码初探-开发Terraform Provider管理私有云MySQL实例
  • 探索计算机存储层次体系:从寄存器到磁带
  • 6_HTML5 SVG (2) --[HTML5 API 学习之旅]
  • 周末紫蓬山行车见闻
  • UE5 移植Editor或Developer模块到Runtime
  • 强光防卫电筒TX-8610
  • Matlab个性化绘图第5期—三维分层柱状图
  • 播放端标注叠加方案
  • 高并发服务器实现总结目录
  • VUE3+django接口自动化部署平台部署说明文档(使用说明,需要私信)
  • Cadence学习笔记 9 器件封装匹配
  • OpenHarmony 3.2 网卡获取ip地址缓慢分析
  • [创业之路-202]:任正非管理华为的思想与毛泽东管理党、军队、国家的思想的相似性与差异性