zjy101010 2022-04-04 13:42 采纳率: 50%
浏览 30
已结题

请问这个应该如何实现

公元2900年,地球文明遭遇前所未有的困境
全球气候变暖,水资源短缺,能源衰竭都制约人类的持续发展
联合政府决定入侵"半人马座三星"
目前距离太阳系最近的行星系是“半人马座三星”,该行星系内有三颗恒星,其中比邻星距离我们最近只有4.22光年。
现在发现半人马星系的n个行星,并依次给出了每个行星的质量,注意行星的质量可能很大。
科学家想要研究这n颗行星是否适合人类居住,不过科学研究往往从最基本的分类数据来分析,现在科二学家需要统计如下数据:
第1大、第3大第n大行星的总质量,请你帮忙计算。
数据保障n是奇数
输入格式
第1行,一个整数n,表示有n个行星(n<1e4)
第2行,n个以空格分隔的数字(每个数字<1e19)
输出格式
一个数字,表示总质量
限制
空间限制:128MByte
时间限制:1秒
样例
输入
5
1 3 2 4 5
输出
9

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-04-04 14:08
    关注

    就是计算最大值,最小值和第三大值。定义四个变量,分别表示第一、第二、第三和最小值。循环输入的时候逐个比较

    #include <stdio.h>
    int main()
    {
        int n,i;
        long long max1,max2,max3,min,m;
        max1 = max2 = max3 = min = 0;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%lld",&m);
            if(i==0)
            {
                max1 = m;
                min = m;
            }
            else
            {
                if(m>max1)
                {
                    max3 = max2;
                    max2 = max1;
                    max1 = m;
                }
                else if(m>max2 && i>1)
                {
                    max3 = max2;
                    max2 = m;
                }
                else if(m>max3 && i>2)
                    max3 = m;
                if(m < min)
                    min = m;
            }
        }
        printf("%lld",max1+max3+min);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月12日
  • 已采纳回答 4月4日
  • 创建了问题 4月4日

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂