1019_黑洞6174

应该是还需要优化的,在此熟悉了 stl 中的sort()的应用,可能内存开销上有点问题,因为开了三个vector. 
#include<iostream>

#include<vector>
#include<math.h>
#include<algorithm>
using namespace std;
//sort 的使用;指向vector 的指针;pow 浮点类型
//注意题意中所有数字都是四位输出,因此输出一定是 数组形式一个个输出而不能是int输出
bool ascComp(int first,int end)
{
	return(first > end);
}
bool desComp(int first,int end)
{
	return (first < end);
}
void intConvertArray(vector<int> *vector,int num)
{
	int temp = num;
	for(int i = 3;i >= 0;i--)
	{
		(*vector).at(3-i) =  temp / (pow(10,i));
		temp = temp % (int)(pow(10,i));//注意浮点数的问题
	}
}

void printVector(vector<int> temp)
{
	for(int i = 0;i <temp.size();i++)
		cout<<temp.at(i);
}

int main()
{
	int N;
	cin >> N;
	vector<int> num(4),ascVec,dscVec,*p;
	p = #//定义一个指向vector 的指针
	intConvertArray(p,N);
	//各个数位相等
	if(num.at(0) == num.at(1) && num.at(0) == num.at(2) && num.at(0) == num.at(3))
	{
		cout<<N<<" - "<<N<<" = 0000"<<endl;
		return 0;
	}
	int diff = 0;
	while(diff != 6174)
	{		
		sort(num.begin(),num.begin() + 4,ascComp);	
		ascVec = num;
		int ascNum = 0,desNum = 0;
		for(int i = 0;i < 4;i ++)
			ascNum += num.at(i) * pow(10,3 - i);
		dscVec = num;
		for(int i = 0;i < 4;i ++)
			desNum += num.at(i) * pow(10,3 - i);
		diff = ascNum - desNum;
		int diffVec = diff;
		intConvertArray(p,diffVec);
		printVector(ascVec);
		cout<<" - ";
		printVector(dscVec);
		cout<<" = ";
		printVector(*p);
		cout<<endl;
	}
		return 0;

}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值