• 【20180807模拟测试】t1 function


    low逼的我也只能写这样的水题。。。

    题面

    对于一个整数,定义 f(x)为他的每个数位的阶乘的乘积。例如 f(135)=1! * 3! * 5! =720。给出一个数 a(可以包含前缀零),a 满足他的至少一个数位大于 1。我们要求出最大 的整数 x,其中 x 不含 0 或 1,并且满足 f(a) = f(x)。
    【输入】
    第一行一个整数 n,表示 a 的长度。 接下来一个整数 a。
    【输出】
    一行一个整数 x 表示答案。
    【输入样例 1】
    4
    1234
    【输出样例 1】
    33222
    【样例 1 说明】
    1! * 2! * 3! * 4! = 3! * 3! * 2! * 2! * 2!

    分析

    算了吧,你看着我无比整齐的代码会明白的
    emm,以下官方正解

    统计出质数 2、3、5、7 作为因子出现了多少次。
    我们 claim 最后的答案一定由这四个数字构成。(比如考虑 8,还不如 7222)。
    我们看看可以放几个 7,能放几个放几个,然后我们就没有 7 了。
    我们看看可以放几个 5,能放几个放几个,然后我们就没有 5 了。
    我们看看可以放几个 3,能放几个放几个,然后我们就没有 3 了。
    最后再把剩下的 2 全放上去。

    关于考试时的思路

    亲测9!=7!*3!*3!*2!
    8!=7!*2!*2!*2!
    。。。
    以此类推9个数而已3分钟就推完了
    反正宁愿要多位数不要大的个位数
    哪那么多废话
    拆了
    然后就只剩2,3,5,7开始拼凑(这和你拆的时候是个反向过程)

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int a[10010],b[1001],n,c[100100],cnt=0;
    int main(){
    
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
           char x;
           cin>>x;
           a[i]=x-'0';
           if(a[i]==2){b[2]++;}
           if(a[i]==3){b[2]++;b[3]++;}
           if(a[i]==4){b[2]+=3;b[3]++;}
           if(a[i]==5){b[2]+=3;b[3]++;b[5]++;}
           if(a[i]==6){b[2]+=4;b[3]+=2;b[5]++;}
           if(a[i]==7){b[2]+=4;b[3]+=2;b[5]++;b[7]++;}
           if(a[i]==8){b[2]+=7;b[3]+=2;b[5]++;b[7]++;}
           if(a[i]==9){b[2]+=7;b[3]+=4;b[5]++;b[7]++;}
        }
        for(int i=7;i>=2;i--){
           while(b[i]>0){
            c[++cnt]=i;
            if(i==2){b[2]--;}
            if(i==3){b[2]--;b[3]--;}
            if(i==4){b[2]-=3;b[3]--;}
            if(i==5){b[2]-=3;b[3]--;b[5]--;}
            if(i==6){b[2]-=4;b[3]-=2;b[5]--;}
            if(i==7){b[2]-=4;b[3]-=2;b[5]--;b[7]--;}
           }
        }
        for(int i=1;i<=cnt;i++)
        printf("%d",c[i]);
        return 0;
    }
    
  • 相关阅读:
    【NX二次开发】Block UI 多行字符串
    【NX二次开发】Block UI 字符串
    【NX二次开发】Block UI 枚举
    【NX二次开发】Block UI 切换开关
    Css
    禁止多行文本框textarea拖拽
    HTML5+Css3-webkit-filter
    Google Chrome一些小技巧
    js获取节点
    getAttribute:取得属性; setAttribute:设置属性。
  • 原文地址:https://www.cnblogs.com/lisuier/p/9535097.html
Copyright © 2020-2023  润新知