• YTU 2801: 用数字造数字(II)


    2801: 用数字造数字(II)

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 244  解决: 168

    题目描述

    输入一个3位以上的整数,求其中最大的两个数字之和与最小的数字之和之间的差。例如:输入8729,输出8,即(9+8)-(2+7)=8,再如,输入24825,输出9,即(8+5)-(2+2)=9。

    输入

    一个3位以上的整数

    输出

    最大的两个数字之和与最小的数字之和之间的差

    样例输入

    8729

    样例输出

    8

    提示

    将分离好的数字存储在数组中,再从数组中找出最大、次大值,以及最小、次小值。最坏的策略,将得到的数组排序后取头尾两个元素。

    你  离  开  了  ,  我  的  世  界  里  只  剩  下  雨  。  。  。

    #include <stdio.h>
    int main( )
    {
        int n,arr[15],m=0,i,ma1,ma2,mi1,mi2,t;
        scanf("%d",&n);
        while(n>0)
        {
            arr[m++]=n%10;
            n/=10;
        }
        for(i=0; i<m-1; i++)
        {
            if(arr[i]>arr[i+1])
            {
                t=arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        for(i=0; i<m-2; i++)
        {
            if(arr[i]>arr[i+1])
            {
                t=arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        ma1=arr[m-1],ma2=arr[m-2];
        for(i=0; i<m-1; i++)
        {
            if(arr[i]<arr[i+1])
            {
                t=arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        for(i=0; i<m-2; i++)
        {
            if(arr[i]<arr[i+1])
            {
                t=arr[i];
                arr[i]=arr[i+1];
                arr[i+1]=t;
            }
        }
        mi1=arr[m-1],mi2=arr[m-2];
        printf("%d",ma1+ma2-mi1-mi2);
        return 0;
    }

  • 相关阅读:
    Codeforces 166E. Tetrahedron
    Codeforce 687A. NP-Hard Problem
    Codeforces 570C. Replacement
    Codeforces 554B. Ohana Cleans Up
    Codeforces 482A. Diverse Permutation
    Codeforces 431C. k-Tree
    Codeforces 750B. Spider Man
    Codeforces 463A. Caisa and Sugar
    Codeforces 701B. Cells Not Under Attack
    Codeforces 445A. DZY Loves Chessboard
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989631.html
Copyright © 2020-2023  润新知