1908: 【入门】马里奥的银币1

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:74 解决:16

题目描述

马里奥有很多银币,有一天他得到了一张魔法卡,只要使用这张魔法卡,就可以使得他的银币里面的最大的银币金额变得更大。如果他最大的银币是偶数的金额,可以直接翻倍;如果他最大的银币是奇数的金额,可以使得银币金额加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

提示

n=int(input())
ls=list(map(int,input().split()))
maxV=max(ls)
for i in range(n):
    if (ls[i]==maxV):
        if (maxV%2==0):
            ls[i]=maxV*2
        else:
            ls[i]=maxV+1

print(' '.join(map(str,ls)))

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[1010],n,i,maxx;
	cin>>n;
	for(i = 0;i < n;i++)
		cin>>a[i];
	maxx = 0;
	for(i = 1;i < n;i++)
		if(a[i] > a[maxx])
			maxx = i;
	if(a[maxx] % 2 == 0)
		a[maxx] *= 2;
	else
		a[maxx] += 1;
	for(i = 0;i < n;i++)
		cout<<a[i]<<" ";
	return 0;
}