数字中的数字
时间: 1ms 内存:128M
描述:
输入一个3位以上的整数,求其中最大的两数字之和与最小的两个数字之和的差。例如:输入8729,输出8(即9+8-2-7=8),再如,输入24825,输出9(即8+5-2-2)。
输入:
一个3位以上的整数
输出:
输入的数据中,最大的两数字之和与最小的两个数字之和的差
示例输入:
8729
示例输出:
8
提示:
参考答案(内存最优[748]):
#include<stdio.h>
void main()
{
int n,a[15],num=0;
int i,j,t;
scanf("%d",&n);
t=n;
while(t>0)
{
a[num++]=t%10;
t/=10;
}//这样,n共有num位,在a[0]-a[n-1]中
for(j=0; j<num-1; j++)//共进行num-1趟比较
for(i=0; i<num-j-1; i++)//在每趟中要进行num-j次两两比较
if (a[i]>a[i+1])//如果前面的数小于后面的数
{
t=a[i];//交换两个数的位zhi
a[i]=a[i+1];
a[i+1]=t;
}//这样,数组中小者在前,大者在后
t=a[num-1]+a[num-2]-a[0]-a[1];
printf("%d\n",t);
}
参考答案(时间最优[0]):
#include <iostream>
using namespace std;
int main( )
{
int n,arr[15],num=0;
int i,j,t;
cin>>n;
t=n;
while(t>0)
{
arr[num++]=t%10;
t/=10;
}
//这样,n共有num位,在arr[0]-arr[n-1]中
for(j=0; j<num-1; j++) //共进行num-1趟比较
for(i=0; i<num-j-1; i++) //在每趟中要进行num-j次两两比较
if (arr[i]>arr[i+1]) //如果前面的数小于后面的数
{
t=arr[i]; //交换两个数的位置,使小数下沉
arr[i]=arr[i+1];
arr[i+1]=t;
}
//这样,数组中小者在前,大者在后
t=arr[num-1]+arr[num-2]-arr[0]-arr[1];
cout<<t;
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。