zoukankan      html  css  js  c++  java
  • CF515C Drazil and Factorial

    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. F(x) = F(a)

    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

    题目地址

    思路:
    对于每一个数字,如6

    我们把它分成几个阶乘相乘的形式

    让能分的阶乘数尽量地多,最后构成的数必然最大

    你可用10分钟手算

    1!=1!1!=1!

    2!=2!2!=2!

    3!=3!3!=3!

    4!=3!*2!*2!4!=3!∗2!∗2!

    5!=5!5!=5!

    6!=5!*3!6!=5!∗3!

    7!=7!7!=7!

    8!=7!*2!*2!*2!8!=7!∗2!∗2!∗2!

    9!=7!*3!*3!*2!9!=7!∗3!∗3!∗2!

    把这些数放入一个数组,再从大到小排序,输出答案

    import java.util.Scanner;
    
    public class Main{
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            String s = sc.next();
            int[] a = new int[20];
            for(int i=0;i<n;i++){
                int t = s.charAt(i)-'0';
                if(t==2)a[2]++;
                if(t==3){
                    a[3]++;
                }
                if(t==4){
                    a[2]+=2;
                    a[3]++;
                }
                if(t==5){
                    a[5]++;
                }
                if(t==6){
                    a[3]++;
                    a[5]++;
                }
                if(t==7){
                    a[7]++;
                }
                if(t==8){
                    a[2]+=3;
                    a[7]++;
                }
                if(t==9){
                    a[2]++;
                    a[3]+=2;
                    a[7]++;
                }
            }
            for(int i=9;i>1;i--){
                for(int j=0;j<a[i];j++){
                    System.out.print(i);
                }
            }
        }
    }
    
  • 相关阅读:
    数据库MySQL调优实战经验总结
    Apache常见功能实战详解
    使用HeartBeat实现高可用HA的配置过程详解
    Nginx实现集群的负载均衡配置过程详解
    CentOS系统通过PXE实现批量无人值守安装
    CentOS 7 网卡命名修改为eth0格式
    Nagios 系统监控基本安装配置过程详解
    LAMP 系统服务搭建过程详解
    使用 python 管理 mysql 开发工具箱
    C++标准库string类型的使用和操作总结
  • 原文地址:https://www.cnblogs.com/fxzemmm/p/14847915.html
Copyright © 2011-2022 走看看