4.17 每日一题题解

牛牛的卡片

涉及知识点:

  • 贪心/思维

solution:

  • \(首先,能被3整除的数,每一位相加一定也能被3整除!\)
  • \(312 = 3 + 1 + 2 = 6,6能被3整除\)
  • \(其次,能被2整除的数,末尾数字一定是偶数!\)
  • $即2,4,6,8 $
  • \(根据以上两种性质,不难构造出符合条件的字符串:\)
  • \(卡片之和要求是3的倍数,且卡片中存在至少一张偶数\)
  • \(符合条件的基础上,我们要排个序,并且把最小的偶数记录下来\)
  • \(要满足数字最大,应该从9到1输出,最后输出最小的偶数即可\)

std:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
    int n,x,minn = 9,sum = 0;
    map<int , int> mp;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&x);
        sum += x;
        if(x%2 == 0){
            minn = min(minn ,x);
        }
        mp[x]++;
    }
    if(sum%3 != 0 || minn == 9){
        printf("-1\n");
        return 0;
    }
    mp[minn]--;
    for(int i=9;i>=1;i--){
        for(int j=1;j<=mp[i];j++){
            printf("%d",i);
        }
    }
    printf("%d",minn);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/QFNU-ACM/p/12717335.html
今日推荐