PTA 1019 数字黑洞 (20 分)

博客主要讨论了PTA中1019题目的解决方案,重点集中在数字黑洞问题的处理上。针对14分的code1,指出了未处理不足4位数字的bug。在20分的code2中,提到了两个关键点:一是如何处理不足四位的数,采用了insert函数;二是直接对数字的字符串形式进行排序,利用了sort函数,从而实现优化。
摘要由CSDN通过智能技术生成

code1 14分

#include<iostream>
#include<string>//直接对string排序
#include<algorithm>
using namespace std;
bool cmp(char a, int b) {return a > b;}//降序排列
int main()
{
	string s;
	cin >> s;
	int m=0,n=0;
	while ((n - m) != 6174) {
		sort(s.begin(), s.end());
		m = stoi(s);//升序
		sort(s.begin(), s.end(), cmp);
		n = stoi(s);//降序
		if (m == n) {
			printf("%04d - %04d = %04d\n", n, m, n - m);
			break;
		}
		printf("%04d - %04d = %04d\n", n, m, n - m);
		s = to_string(n - m);
	}
	return 0;
}

bug在于没有对不足4位的数字进行处理

code2 20分

#include<iostream>
#include<string>//直接对string排序
#include<algorithm>
using namespace std;
bool cmp(char a, int b) {return a > b;}//降序排列
int main()
{
	string s;
	cin >> s;
	s.insert(0, 4 - s.length(), '0');
	int m=0,n=0;
	while ((n - m) != 6174) {
		sort(s.begin(), s.end());
		m = stoi(s);//升序
		sort(s.begin(), s.end(), cmp);
		n = stoi(s);//降序
		if (m == n) {
			printf("%04d - %04d = %04d\n", n, m, n - m);
			break;
		}
		printf("%04d - %04d = %04d\n", n, m, n - m);
		s = to_string(n - m);
		s.insert(0, 4 - s.length(), '0');
	}
	return 0;
}

注意点

1.对不足四位的数的处理,insert函数的使用。
2.直接对string进行排序,用sort函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值