每日训练(四)

简介: PTA的一道题:阶乘进阶

 阶乘计算升级版

 

题目:本题要求实现一个打印非负整数阶乘的函数。

函数接口定义:

void Print_Factorial ( const int N );

其中N是用户传入的参数,其值不超过1000。如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input”。

裁判测试程序样例

#include <stdio.h>
void Print_Factorial ( const int N );
int main()
{
    int N;
    scanf("%d", &N);
    Print_Factorial(N);
    return 0;
}
/* 你的代码将被嵌在这里 */

image.gif

输入样例:

15

image.gif

输出样例:

1307674368000

image.gif

解题思路:这里很明显是不能使用long long等长整型去做,因为已经超过long long的范围了,我们需要使用数组来存放结果。

思路是这样的:定义一个整型数组,然后将结果按位数从arr[0]按顺序存放。

比如:

2的阶乘:arr[0] = arr[0]*2+进位数,此时进位数为0,arr[0]存放的是2

3的阶乘:arr[0] = arr[0]*3+进位数,此时进位数为0,arr[0]存放的是6

4的阶乘:arr[0] = arr[0]*4+进位数,此时,结果是12,因此进位数是1,arr[0]存放的12%10 ==2,arr[1] = 1.

5的阶乘:arr[0] = arr[0]*5+进位数,,进位数为2,arr[0] = 0.arr[1]*5+进位数。此时arr[1] = 2,进位数是1,arr[3] = 1。所有结果是120。

E9ZDKR$5TI]5UMCCIB86~RH.png

void Print_Factorial ( const int N ) {
    if(N<0)
    {
        printf("Invalid input");
    }
    else{
            int arr[10000] = {0};
    arr[0] = 1;
    int carray = 0;//记录进位数
    int digitcapacity = 0;//用来记录位数
    int n = N;
     int j = 0,i = 0;
    for(i = 2;i<=n;i++)
    {
        for(j = 0;j<=digitcapacity;j++)
        {
            int tmp = arr[j]*i+carray;
            arr[j] = tmp%10;
            carray = tmp/10;
        }
        while(carray)
          {
              arr[j++] = carray%10;
               carray/=10;
                digitcapacity++;
            }
    }
    for(;digitcapacity>=0;digitcapacity--)//逆向打印
    {
        printf("%d",arr[digitcapacity]);
    }
 }
}

image.gif


相关文章
|
7月前
|
机器学习/深度学习 弹性计算 TensorFlow
在阿里云上打造强大的模型训练服务
随着人工智能技术的迅猛发展,模型训练服务变得愈发关键。阿里云提供了一系列强大的产品,使得在云端轻松搭建、优化和管理模型训练变得更加便捷。本文将详细介绍如何使用阿里云的相关产品构建高效的模型训练服务。
518 0
|
4月前
|
Python
模型训练
【8月更文挑战第20天】模型训练。
57 0
|
3月前
|
人工智能 自动驾驶 数据库
领域大模型的训练需要什么数据?
领域大模型的训练需要什么数据?
169 0
|
4月前
|
机器学习/深度学习
DNN模型训练
【8月更文挑战第9天】DNN模型训练。
33 1
|
4月前
|
机器学习/深度学习 自然语言处理 数据可视化
训练模型
【8月更文挑战第1天】
51 2
|
XML 数据挖掘 数据格式
|
7月前
|
机器学习/深度学习 人工智能 边缘计算
为何人们喜欢推理胜于训练大模型?
在AI和机器学习领域,越来越多的人转向重视推理而非大规模模型训练。推理的即时性和高效性使其在需要快速响应的场景中占优,如自然语言处理和图像识别。推理过程的可视化能帮助用户理解模型决策,便于调试和提升性能。此外,推理在边缘计算和移动设备上的应用降低了延迟和带宽成本,同时保护了用户隐私。相比于训练大模型的高资源消耗,推理更为节能且成本效益高,尤其在数据挖掘和新知识探索方面展现出创新潜力。推理在实际应用中与训练模型相结合,提供了性能与成本的有效平衡。随着技术进步,推理将在推动人工智能领域发展中发挥更大作用。
|
机器学习/深度学习 数据处理
训练多个epoch来提高训练模型的准确率
训练多个epoch来提高训练模型的准确率
260 0