题解 P7174 【[COCI2014-2015#4]CESTA】

· · 题解

P7174 CESTA 题解

首先读题,可以发现这道题主要可以分为两步:判断30倍数和找最大值。如果一个数要是30的倍数,那么这个数一定是3的倍数和10的倍数。如果一个数是3的倍数,那么它的各位数字和一定也是3的倍数(小学奥数内容);如果一个数是10的倍数,那么这个数的末尾一定要有个0。延伸到这道题目中,就是一定要含有0。最后将每位数字从大到小输出即可。

AC代码:

#include<bits/stdc++.h>//万能头文件 
using namespace std;
string s;
int x,f[1001];   
int main()
{
    cin>>s;
    int len=s.size();
    for(int i=0;i<=len-1;i++)f[s[i]-'0']++;//统计每位数字出现的次数  
    for(int i=9;i>=1;i--)x+=f[i]*i;//算数字和 
    if(x%3||!f[0])cout<<-1;//假如不是30的倍数  
    else for(int i=9;i>=0;i--)for(int j=1;j<=f[i];j++)cout<<i;//否则从大到小输出 
    return 0;//结束awa 
} 

题解求过awa