51Nod-1435-位数阶乘

235 篇文章 1 订阅
182 篇文章 3 订阅

ACM模版

描述

描述

题解

这道题猛一看比较咋呼人,但是仔细分析下来,会发现十分简单,关键是拆解每一位数,拆解成质因数的形式,然后统计每个质因数一共出现的次数,在寻找正整数Xans[])时,只要按从大到小的顺序凑质因数就可以了,凑够了也就是最后的答案了。

代码

#include <iostream>

using namespace std;

const int MAXN = 16;
const int MAXM = 10;
const int MAXA = 300;

char num[MAXN];
int num_[MAXN];
int dig[MAXM];
int ans[MAXA];

int main(int argc, const char * argv[])
{
    int n;
    cin >> n;
    cin >> num;
    for (int i = 0; i < n; i++)
    {
        num_[i] = num[i] - '0';
        for (int j = 2; j <= num_[i]; j++)
        {
            if (j == 4)
            {
                dig[2] += 2;
            }
            else if (j == 6)
            {
                dig[2]++;
                dig[3]++;
            }
            else if (j == 8)
            {
                dig[2] += 3;
            }
            else if (j == 9)
            {
                dig[3] += 2;
            }
            else
            {
                dig[j]++;
            }
        }
    }
    int pos = 0;
    for (int i = 7; i > 1; i--)
    {
        if (dig[i] > 0)
        {
            switch (i)
            {
                case 7:
                    for (int j = 0; j < dig[7]; j++)
                    {
                        ans[pos++] = 7;
                    }
                    dig[2] -= dig[7] * 4;
                    dig[3] -= dig[7] * 2;
                    dig[5] -= dig[7];
                    break;
                case 5:
                    for (int j = 0; j < dig[5]; j++)
                    {
                        ans[pos++] = 5;
                    }
                    dig[2] -= dig[5] * 3;
                    dig[3] -= dig[5];
                    break;
                case 3:
                    for (int j = 0; j < dig[3]; j++)
                    {
                        ans[pos++] = 3;
                    }
                    dig[2] -= dig[3];
                    break;
                case 2:
                    for (int j = 0; j < dig[2]; j++)
                    {
                        ans[pos++] = 2;
                    }
                    break;
            }
        }
    }

    for (int i = 0; i < pos; i++)
    {
        cout << ans[i];
    }
    cout << '\n';

    return 0;
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值