首页 > 其他分享 >8617 阶乘数字和

8617 阶乘数字和

时间:2024-07-06 20:30:40浏览次数:19  
标签:std 数字 int sum 位上 8617 vector 阶乘

这是一个关于计算阶乘结果所有位上的数字之和的问题。我们可以通过以下步骤来解决这个问题:

1. 首先,我们需要一个函数来计算阶乘。由于n的范围可以达到50,阶乘的结果可能非常大,所以我们需要使用一个可以处理大整数的数据类型,例如C++中的`std::vector<int>`来存储阶乘的结果。

2. 然后,我们需要一个函数来计算一个大整数所有位上的数字之和。我们可以通过遍历`std::vector<int>`中的每个元素来实现这一点。

3. 最后,我们需要一个循环来处理多个测试用例。当输入为0时,我们结束循环。

以下是实现这个问题的C++代码:

#include <iostream>
#include <vector>

std::vector<int> factorial(int n) {
    std::vector<int> result(1, 1);
    for (int i = 1; i <= n; ++i) {
        int carry = 0;
        for (int j = 0; j < result.size(); ++j) {
            int temp = result[j] * i + carry;
            result[j] = temp % 10;
            carry = temp / 10;
        }
        while (carry) {
            result.push_back(carry % 10);
            carry /= 10;
        }
    }
    return result;
}

int digitSum(const std::vector<int>& num) {
    int sum = 0;
    for (int digit : num) {
        sum += digit;
    }
    return sum;
}

int main() {
    while (true) {
        int n;
        std::cin >> n;
        if (n == 0) {
            break;
        }
        std::vector<int> fact = factorial(n);
        std::cout << digitSum(fact) << std::endl;
    }
    return 0;
}

这段代码首先计算了n的阶乘,然后计算了阶乘结果所有位上的数字之和,最后输出了这个和。

标签:std,数字,int,sum,位上,8617,vector,阶乘
From: https://blog.csdn.net/huang1xiao1sheng/article/details/140133386

相关文章

  • 【免费开源数字人工具】
       MuseTalk一键数字人克隆系统,本地整合包功能大更新!室外能跑动的数字人!无需部署环境,无脑开启一键生成数字人,制作个人可用可控可调的数字人,视频数字人!下载地址:免费下载 ......
  • 数字设计--门控时钟与时钟切换
    门控时钟(ICG)使用门控时钟的原因芯片功耗组成中,大部分是由时钟树消耗掉的。因为这些时钟树在系统中具有最高的切换频率,而且有很多时钟buffer,并且为了最小化时钟延时,它们通常具有很高的驱动强度。此外,即使输入和输出保持不变,接收时钟的触发器也会消耗一定的功耗。而且这些功耗主......
  • 【2023-2024第二学期】助教工作学期总结——数字电路与逻辑设计助教
    一、助教工作的具体职责和任务协助教师引导大一转专业学生如何学习本门课程,收集学生问题、定期答疑、协助教师批改作业并跟踪作业完成情况,实验指导,改进课程建设。指导学生学习《数字电路与逻辑设计》。并指导学生完成《数字电路与逻辑设计实验》。二、助教工作的每周时长和具体......
  • 数字时代的影像奇迹:专业照片处理软件的创新功能与视觉盛宴
    大家好!随着时间的流逝,一些珍贵的照片可能会因各种原因而变得模糊不清,但幸运的是,现代科技的发展为我们提供了一种解决方案——专业的照片处理软件。这类软件具备强大的功能,能够将照片高清修复并赋予特效变化,让那些珍贵的记忆更加清晰生动。来一起看看这款软件都有什么功能吧。......
  • IIS数字功放MAX98357开发板/评估系统
    前言MAX98357中文介绍请访问下行链接MAX98357、MAX98357A、MAX98357B小巧、低成本、PCMD类IIS放大器,具有AB类性能中文说明规格书一般描述MAX98357开发板(DEV板)是一个完全组装并经过测试的PCB,用于评估MAX98357I2S数字输入D类功率放大器。DEV板采用2.5V至5.5V单直......
  • 集团数字化建设总体规划
    1、数字生态体系建设规划体系规划整体思路 从战略出发,描绘企业愿景蓝图,结合领先实践,设计方案与实施路线 通过体系规划和建设,助力业务发展,支撑战略落地 数字化助力上下贯通的高效管理与横向协同的业务经营 建设后援集中平台,实现高效高质集中作业、交叉销售,产......
  • MSPM0G3507——读取引脚的高低电平方法(数字信号循迹模块)
     SYSCFG配置  代码部分//第一个传感器if(DL_GPIO_readPins(xunji_PORT_PIN1_PORT,xunji_PORT_PIN1_PIN)==xunji_PORT_PIN1_PIN)//黑,不亮高{a=1;}......
  • 数字证书的应用场景有哪些?
    在当今数字化飞速发展的时代,数字证书作为保障信息安全和身份认证的重要工具,发挥着越来越关键的作用。那么,数字证书究竟在哪些场景中得到了广泛的应用呢?一、电子商务领域在电子商务交易中,数字证书确保了交易双方的身份真实性和交易数据的完整性、保密性。例如,当消费者在网上购物......
  • 小程序数字类型加小数点两位
    小程序数字类型加小数点两位 <input type="digit" placeholder="请输入自定义金额" bindblur='price_no_focus' bindfocus="price_focus" value="{{price}}" bindinput="handleInput"/> formatNum(e){//正则验证金额输入框格式e.......
  • 手写数字识别-使用TensorFlow构建和训练一个简单的神经网络
    下面是一个具体的Python代码示例,展示如何使用TensorFlow实现一个简单的神经网络来解决手写数字识别问题(使用MNIST数据集)。以下是一个完整的Python代码示例,展示如何使用TensorFlow构建和训练一个简单的神经网络来进行手写数字识别。MNIST数据集的训练集有60000个样本:Python代码i......