• B1019 数字黑洞 (20分)


    B1019 数字黑洞 (20分)

    给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。

    例如,我们从6767开始,将得到

    7766 - 6677 = 1089
    9810 - 0189 = 9621
    9621 - 1269 = 8352
    8532 - 2358 = 6174
    7641 - 1467 = 6174
    ... ...
    现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。

    输入格式:

    输入给出一个 ((0,10^4)) 区间内的正整数 N。

    输出格式:

    如果 N 的 4 位数字全相等,则在一行内输出 N - N = 0000;否则将计算的每一步在一行内输出,直到 6174 作为差出现,输出格式见样例。注意每个数字按 4 位数格式输出。

    输入样例 1:

    6767

    输出样例 1:

    7766 - 6677 = 1089
    9810 - 0189 = 9621
    9621 - 1269 = 8352
    8532 - 2358 = 6174
    输入样例 2:
    2222
    输出样例 2:
    2222 - 2222 = 0000

    思考

    首先是4位数的形式,用几个数组来表示这个过程。
    写两个cmp,用c++的sort
    用两个就可以了。
    我得先把6767拆成数组表示法。
    给出有两个测试点错误代码

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    bool cmp(int a, int b){
    	return a > b;//当a>b时,将a放在b的前面 原则返回正,保持先a后b顺序 
    }
    int main(void){
    	int tmp[4];
    	int ans[4];
    	int num,num1,num2,N;
    	scanf("%d", &N);
    	num = N;
    	if(num==6174) {
    		printf("7641 - 1467 = 6174"); 
    		return 0;
    	}
    	while(num!=6174){
    		tmp[0]=num/1000;
    		tmp[1]=(num%1000)/100;
    		tmp[2]=(num%100)/10;
    		tmp[3]=num%10;
    		if(tmp[0]==tmp[1] && tmp[0]==tmp[2]&& tmp[0]==tmp[3]){
    			printf("%04d - %04d = 0000",num,num);
    			break;
    		}
    		for(int i=0;i<4;i++){
    			ans[i] = tmp[i];
    		}
    		sort(ans,ans+4,cmp);//进行递减排序  得到第一个数字
    		num1 =ans[0]*1000+ans[1]*100+ans[2]*10+ans[3]*1; 
    		sort(tmp,tmp+4);//默认进行递增排序  得到第二个数字
    		num2 =tmp[0]*1000+tmp[1]*100+tmp[2]*10+tmp[3]*1;
    		num=num1-num2; 
    		printf("%04d - %04d = %04d
    ",num1,num2,num);	
    	}
    	return 0;
    } 
    

    6174本身
    7641 - 1467 = 6174
    还有就是N - N = 0

  • 相关阅读:
    浅谈C#托管程序中的资源释放问题
    c#基本语法学习笔记
    深入剖析C#多态性
    Reporting Services API
    进程和线程的区别
    化妆品网站,饰品网站
    宠物销售网站
    卖地方特色才产品,类似湖南味道那样的网上专卖店
    建立友情链接联盟
    DIY最残忍U盘
  • 原文地址:https://www.cnblogs.com/lingr7/p/10292360.html
Copyright © 2020-2023  润新知