• codeforces 515C C. Drazil and Factorial(水题,贪心)


    题目链接:

    C. Drazil and Factorial

    time limit per test

    2 seconds

    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Drazil is playing a math game with Varda.

    Let's define  for positive integer x as a product of factorials of its digits. For example, .

    First, they choose a decimal number a consisting of n digits that contains at least one digit larger than 1. This number may possibly start with leading zeroes. Then they should find maximum positive number x satisfying following two conditions:

    1. x doesn't contain neither digit 0 nor digit 1.

    2.  = .

    Help friends find such number.

    Input

    The first line contains an integer n (1 ≤ n ≤ 15) — the number of digits in a.

    The second line contains n digits of a. There is at least one digit in a that is larger than 1. Number a may possibly contain leading zeroes.

    Output

    Output a maximum possible integer satisfying the conditions above. There should be no zeroes and ones in this number decimal representation.

    Examples
    input
    4
    1234
    output
    33222
    input
    3
    555
    output
    555
    Note

    In the first case, 

    思路:把数拆一下就是很简单了;

    AC代码:

    #include <bits/stdc++.h>
    using namespace std;
    char s[20];
    int flag[10];
    int main()
    {
        int n;
        scanf("%d",&n);
        memset(flag,0,sizeof(flag));
        scanf("%s",s);
        for(int i=0;i<n;i++)
        {
            if(s[i]=='4')
            {
                flag[3]+=1;
                flag[2]+=2;
            }
            else if(s[i]=='6')
            {
                flag[5]+=1;
                flag[3]+=1;
            }
            else if(s[i]=='8')
            {
                flag[7]+=1;
                flag[2]+=3;
            }
            else if(s[i]=='9')
            {
                flag[7]+=1;
                flag[3]+=2;
                flag[2]+=1;
            }
            else flag[s[i]-'0']+=1;
        }
        for(int i=7;i>1;i--)
        {
            //cout<<"@"<<flag[i]<<endl;
                while(flag[i])
                {
                    printf("%d",i);
                    flag[i]-=1;
                }
        }
    }
  • 相关阅读:
    静态代码块执行顺序
    静态代码块
    方法的定义(实例与静态)
    变量的声明(实例与静态)
    static关键字
    封装2
    线程1
    数组元素的查找——二分法查找
    docker介绍、安装及要素讲解
    渗透测试基础
  • 原文地址:https://www.cnblogs.com/zhangchengc919/p/5272068.html
Copyright © 2020-2023  润新知