05網亮點給力大試卷網站seo博客
題目描述
佳佳的老師在黑板上寫了一個由? n個正整數組成的數列,要求佳佳進行如下操作:每次擦去其中的兩個數a? 和b ,然后在數列中加入一個數a*b+1 ,如此下去直至黑板上剩下一個數為止,在所有按這種操作方式最后得到的數中,最大的為 max,最小的為 min,?則該數列的極差定義為M=max-min 。
由于佳佳忙于準備期末考試,現請你幫助他,對于給定的數列,計算出相應的極差?。
輸入格式
第一行為一個正整數n? 表示正整數序列的長度;
在接下來的? n行中,每行輸入一個正整數。
接下來的一行有一個 0,表示數據結束。
輸出格式
輸出只有一行,為相應的極差?。
樣例
樣例輸入
復制3
1
2
3
0
樣例輸出
復制2
_____________________________________________________________________________
寫作不易,點個贊唄!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
____________________________________________________________________________
每次排序后算最小的數,最后結果為max;
每次排序后算最大的數,最后結果為min;
#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];
}