数列极差(c++题解)

题目描述

佳佳的老师在黑板上写了一个由 n个正整数组成的数列,要求佳佳进行如下操作:每次擦去其中的两个数a 和b ,然后在数列中加入一个数a*b+1 ,如此下去直至黑板上剩下一个数为止,在所有按这种操作方式最后得到的数中,最大的为 max,最小的为 min, 则该数列的极差定义为M=max-min 。

由于佳佳忙于准备期末考试,现请你帮助他,对于给定的数列,计算出相应的极差 。

输入格式

第一行为一个正整数n 表示正整数序列的长度;

在接下来的 n行中,每行输入一个正整数。

接下来的一行有一个 0,表示数据结束。

输出格式

输出只有一行,为相应的极差 。

样例

样例输入
复制代码
复制3
1
2
3
0
样例输出
复制代码
复制2

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


每次排序后算最小的数,最后结果为max;

每次排序后算最大的数,最后结果为min;

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1000005];
int b[1000005];
bool cmp1(int x,int y){
	return x<y; 
}
bool cmp2(int x,int y){
	return x>y;
}
int main(){
	int n;
	cin>>n;
    for(int i=1;i<=n+1;i++){
    	cin>>a[i];
    	b[i]=a[i];
    	if(a[i]==0)break;
	}
	for(int i=1;i<n;i++){
		sort(a+i,a+1+n,cmp1);
		sort(b+i,b+1+n,cmp2);
		a[i+1]=a[i]*a[i+1]+1;
		b[i+1]=b[i]*b[i+1]+1;
	}
	cout<<a[n]-b[n];
}
相关推荐
小侯不躺平.2 分钟前
C++ Boost库【4】 --分词器的使用
c++·windows·microsoft
薛定e的猫咪7 分钟前
【ICML 2025】MODULI:基于扩散模型解锁离线多目标强化学习的偏好泛化
人工智能·学习·算法·机器学习
码农-阿杰8 分钟前
Java 线程中断机制深度解析:从 API 到底层 C++ 实现
java·开发语言·c++
Brilliantwxx9 分钟前
【C++】priority_queue以及 仿函数 的学习
开发语言·c++·笔记·学习·算法
风味蘑菇干10 分钟前
斗地主案例
java·数据结构·算法
宠..18 分钟前
VS Code 修改 C++ 标准同时修改错误检测标准
java·linux·开发语言·javascript·c++·python·qt
Languorous.31 分钟前
C++数据结构高阶|B+树深度解析:从底层原理到数据库应用,面试高频考点全覆盖
数据结构·b树·面试
洛水水31 分钟前
【力扣100题】39.二叉树的最近公共祖先
算法·leetcode·职场和发展
无敌昊哥战神41 分钟前
【LeetCode 134】加油站:图解指针跳跃与 O(N) 极简贪心,避开 Python 隐藏坑!
c语言·python·算法·leetcode
人道领域1 小时前
【LeetCode刷题日记】222.极速计算完全二叉树节点数:O(log²n)算法揭秘
java·数据结构·算法·leetcode·深度优先