每日一题 — 2020 - 04 - 17

题目链接

今天的每日一题很不错,我不会,这样有可以学到新知识了,hhh


解题思路:

  • 偶数的话很好判断,只要最后一位是偶数即可
  • 对于3,这里有一个知识点,如果所有的数相加最后的值是3的倍数,那么他的值也是三的倍数(证明的话可以自己查一下)
  • 然后我们剩余的其他数字,找出一位最小的偶数排在最后,然后剩下的从大到小排即可

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 100010;

int a[N];

int main(){
	int n;
	scanf("%d",&n);
	int mi = 10;

	int res = 0;

	for (int i = 0; i < n; i ++){
		scanf("%d",&a[i]);
		if (a[i] % 2 == 0){
			mi = min(a[i],mi);
		}
		res += a[i];
	}

	sort (a, a + n);

	int k = 1;

	if (res % 3 != 0 || mi == 10){
		puts("-1");
		return 0;
	}
	else{
		for (int i = n - 1; i >= 0; i--){
			if (k && a[i] == mi){
				k = 0;
				continue;
			}
			else{
				printf("%d",a[i]);
			}
		}
	}
	printf("%d",mi);
	puts("");
	return 0;
}
发布了121 篇原创文章 · 获赞 7 · 访问量 4322

猜你喜欢

转载自blog.csdn.net/LiangNiuMu/article/details/105583723