• 51nod 1433 0和5


    题目来源: CodeForces
    基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
     收藏
     关注

    小K手中有n张牌,每张牌上有一个一位数的数,这个字数不是0就是5。小K从这些牌在抽出任意张(不能抽0张),排成一行这样就组成了一个数。使得这个数尽可能大,而且可以被90整除。

    注意:

    1.这个数没有前导0,

    2.小K不需要使用所有的牌。

    Input
    每个测试数据输入共2行。
    第一行给出一个n,表示n张牌。(1<=n<=1000)
    第二行给出n个整数a[0],a[1],a[2],…,a[n-1] (a[i]是0或5 ) 表示牌上的数字。
    Output
    共一行,表示由所给牌组成的可以被90整除的最大的数,如果没有答案则输出”-1”(没有引号)
    Input示例
    4
    5 0 5 0
    Output示例
    0
    根据一个性质 :若某个数的数位之和相加%9==0 则 该数能被9整除
    那能被90整除也遵循这个性质 只不过需要最后有一个0
    #include <algorithm>
    #include <cstdio>
    using namespace std;
    int Num[2],A,n;
    long long maxn=-1;
    int cmp(int a,int b){return a>b;}
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&A);
            A==5?Num[1]++:Num[0]++;
        }
        if(!Num[0]) {printf("-1");return 0;}
        while(Num[1])
        {
            int ans=Num[1]*5;
            if(ans%9==0)
            {
                while(Num[1]--) printf("5");
                while(Num[0]--) printf("0");
                return 0;
            }
            else Num[1]--;
        }
        if(Num[0]) printf("0");
        else printf("-1");
        return 0;
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    Java 插入排序
    Java 浮点型与双精度数值比较
    Java 包装类Integer的值比较
    ORA-00942 table or view does not exist
    logging模块
    面向对象
    模块和包
    异常处理
    序列化模块
    css3选择器
  • 原文地址:https://www.cnblogs.com/ruojisun/p/6724656.html
Copyright © 2020-2023  润新知