问题:1581. 马里奥的银币1
类型:数组找数
题目描述:
马里奥有很多银币,有一天他得到了一张魔法卡,只要使用这张魔法卡,就可以使得他的银币里面的最大的银币金额变得更大。如果他最大的银币是偶数的金额,可以直接翻倍;如果他最大的银币是奇数的金额,可以使得银币金额加 1 。
比如:假设马里奥存有的银币金额分别为 5 7 8 1 4 ,那么最大的银币面值为 8 ,只要使用魔法卡,银币的金额就会变为5 7 16 1 4 ;
再比如:假设马里奥存有的银币金额分别为 5 7 9 1 4 ,那么最大的银币面值为 9 ,只要使用魔法卡,银币的金额就会变为 5 7 10 1 4 ;
已知马里奥众多的银币中,面额最大的银币只有 1 个,请你求出,马里奥使用魔法卡之后,他的银币金额分别是多少?
输入:
第一行是一个整数 n 代表马里奥有 n 个银币。(n≤1000)
第二行有 n 个整数,用空格隔开,代表马里奥每个银币的金额。
输出:
一行有 n 个整数,代表使用过魔法卡之后,马里奥的银币的金额,分别是多少?
样例:
输入:
5
5 7 8 1 4
输出:
5 7 16 1 4
完整代码如下:
#include<bits/stdc++.h>
using namespace std;
int a[1010];
int main(){//一、分析问题//已知:有 n 个银币。(n≤1000)//未知:使用过魔法卡之后,银币的金额,分别是多少?//关系: 如果他最大的银币是偶数的金额,可以直接翻倍;如果他最大的银币是奇数的金额,可以使得银币金额加 1 。//二、定义变量(已知、未知、关系)int n,mmax=INT_MIN,imax; //三、输入已知cin>>n;for(int i=0;i<n;i++){cin>>a[i];if(a[i]>mmax){mmax=a[i];imax=i;}}//四、根据关系计算if(mmax%2==0){a[imax]+=a[imax];}else{a[imax]+=1;}//五、输出未知 for(int i=0;i<n;i++){cout<<a[i]<<" ";}return 0;
}