我的代码:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n,r,s=0,p=1,min=-1000000000,max=1000000000,imin,imax;
cin>>n;
vector <int> v;
for (int i=0;i<n;i++){
cin>>r;
v.push_back(r);
}
for (int i=0;i<n;i++){
if (v[i]>0){
s+=v[i];
}
if (min>v[i]){
min=v[i];
imin=i;
}
if (max<v[i]){
max=v[i];
imax=i;
}
}
if(imin<imax){
for (int i=imin+1;i<imax;i++){
p*=v[i];
}
}else{
for (int i=imax+1;i<imin;i++){
p*=v[i];
}
}
cout<<s<<" "<<p;
return 0;
}
简而言之:您需要打印正数和乘积的最小值和最大值之间的乘积之和,不包括在内
作业全文:
家庭作业。Petya 是班里数学最好的,所以老师给他布置了一个艰巨的家庭作业,你需要找到给定整数集合中所有正元素的总和,然后找出最大和最小元素在哪里给定序列,并计算位于该序列中的数字在它们之间的乘积。众所周知,最小和最大元素在给定的一组数字中只出现一次,并且不相邻。由于老师给了 Petya 大约一百个这样的任务,Petya 作为一个强大的程序员,能够编写一个程序,独立地为给定的一组数字找到一个解决方案。你弱吗?
输入数据
第一行包含一个数字 N (N⩽15) — 数组元素的数量。第二行包含表示给定数组的 N 个整数。所有数组元素都用空格分隔。输入文件中的每个数字,包括 N,绝对值不超过 20。
输出
在一行中,您需要打印两个用空格分隔的数字:正元素的总和以及位于最小和最大元素之间的数字的乘积。和和乘积值不超过模106。
反向改变原来的最小值和最大值: