魔法棒
暂无标签
题目统计 全部提交
时间限制:C/C++ 1000MS,其他语言 2000MS
内存限制:C/C++ 256MB,其他语言 512MB
难度:简单
出题人:admin
描述
2、Master在给他的伙伴Sandy准备礼物。他有一个包含n个数的数列a,这个礼物就是数列中所有元素的乘积。Master想让这个乘积尽可能的大,他有一个魔法棒,可以使得其中任意一个数增大1,但是可惜的是这个魔法棒只能使用1次,聪明的你能帮助Master使用这个魔法棒,使得对于魔法棒改变后的新数列,Master能获得最大的乘积吗?
输入描述
第1行包含一个正整数n,表示这个数列包含的数的个数(1<= n <=9)
第2行包含n个数,表示该数列中的每一个数ai(0<= ai <=9),任意两个数之间用空格分割
输出描述
输出一行,表示使用魔法棒后,Master所能获得的最大乘积
用例输入 1
4
2 2 1 2
用例输出 1
16
思路:
我们仔细看,这里的n和ai是很小的,所以,我们只要用一种很笨很暴力的方法就能做出来了
我们放一个循环,每次给一个ai++,然后把n个数都乘起来,最后看那一次最大就好了
代码:
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,ma=INT_MIN;//INT_MIN就是int能表示的最小值,也就是-2147483648左右
cin>>n;//n个数
long long a[n+10];
for(int i=1;i<=n;i++){
cin>>a[i];//读入n个数
}
for(int i=1;i<=n;i++){
a[i]++;//实用魔法棒
long long cj=1;//乘积
for(int j=1;j<=n;++j){
cj*=a[j];//都乘起来
}
if(cj>ma){//如果比之前的数大
ma=cj;//那最大的就是cj
}
a[i]--;//要减回去,变成原来的数字
}
cout<<ma;//输出
return 0;
}