zoukankan      html  css  js  c++  java
  • 1019 数字黑洞

    给定任一个各位数字不完全相同的 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

    思路:考虑到要以6174作为判断条件,直接输入6174时应该也有一步过程需要自己写出来,还有主要就是注意max与min的转化......

     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<string.h>
     4 #include<stdlib.h>
     5 int cmp(const void *x,const void *y)
     6 {
     7     return *(int*)y - *(int*)x;//降序
     8 }
     9 int max_min(int num[])
    10 {
    11     qsort(num,4,sizeof(int),cmp);
    12     int max=0,min=0,sum;
    13     for(int i=0;i<4;i++)
    14     {
    15         min=min+pow(10,i)*num[i];
    16         max=max+pow(10,3-i)*num[i]; 
    17     }
    18     sum=max-min;
    19     printf("%04d - %04d = %04d
    ",max,min,sum);
    20     return sum;
    21 }
    22 int main()
    23 {
    24     int n,num[4];
    25     scanf("%d",&n);
    26     if(n==6174)
    27     {
    28       printf("7641 - 1467 = 6174
    ");
    29       return 0;
    30     }
    31    while(n!=6174)
    32    {
    33        num[0]=n/1000;
    34     num[1]=n/100%10;
    35     num[2]=n/10%10;
    36     num[3]=n%10;
    37     if(num[0]==num[1]&&num[1]==num[2]&&num[2]==num[3])
    38     {
    39         printf("%04d - %04d = 0000
    ",n,n);
    40         break;
    41     }
    42     n=max_min(num);
    43    }
    44     return 0;
    45 }
    
    
    
     
     
    大佬见笑,,
  • 相关阅读:
    NodeJS NPM 镜像使用方法
    用for; while...do; do...while; 写出九九乘法表
    create-react-app创建的项目中registerServiceWorker.js文件的作用
    前端应该从哪些方面优化网站?
    JS基础整理面试题
    netcore实践:跨平台动态加载native组件
    iOS开发--Swift RAC响应式编程初探
    算法导论学习笔记 (页码:9 ~ 16)
    iOS开发-- 通过runtime kvc 移除导航栏下方的阴影效果线条
    iOS开发--面试
  • 原文地址:https://www.cnblogs.com/xwl3109377858/p/10213877.html
Copyright © 2011-2022 走看看