• CCF CSP 201903-1 小中大


    试题编号: 201903-1
    试题名称: 小中大
    时间限制: 1.0s
    内存限制: 512.0MB

    在这里插入图片描述
    在这里插入图片描述

    思路:

    从0开始编号到n-1
    1.n为奇数情况,将第一个数,第(n-1)/2个数,最后一个数从大到小输出即可;
    2.n为偶数情况,中位数为第n/2-1个数和第n/2个数的平均数,同时用double和int记录这个数,如果两个值相等,就输出整数,否则输出保留一位小数的数;

    代码:

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    int main(){
    	int n,a,cmp=0;
    	scanf("%d",&n);
    	vector<double> v;
    	if(n%2){
    		int mid=(n-1)>>1;
    		for(int i=0;i<n;i++){
    			scanf("%d",&a);
    			if(i==0||i==n-1||i==mid) v.push_back(a);
    		}
    	}else{
    		int left=(n>>1)-1,right=n>>1,num=0;
    		for(int i=0;i<n;i++){
    			scanf("%d",&a);
    			if(i==0||i==n-1) v.push_back(a);
    			if(i==left||i==right) num+=a;
    		}
    		cmp=num>>1;
    		v.push_back(num/2.0);
    	}
    	sort(v.begin(),v.end(),greater<double>());
    	printf(cmp==v[1]||n%2?"%.0f %.0f %.0f":"%.0f %.1f %.0f",v[0],v[1],v[2]);
    	return 0;
    }
    
  • 相关阅读:
    JAVA面试题
    Io流
    初识线程池
    理解事务的4种隔离级别
    简单认识Git与GitHub
    JAVA自动装箱和拆箱
    代码块以及他们的执行顺序
    反射机制
    java Excel表格
    访问修饰符的含义分析
  • 原文地址:https://www.cnblogs.com/yuhan-blog/p/12308993.html
Copyright © 2020-2023  润新知