57 求N!

问题描述 :

给你一个整数N(0 ≤ N ≤ 10000),你的任务是计算并输出 N!

输入说明 :

输入多行,每行一个N。

输出说明 :

对于每个输入N,在一行中输出N!

行首与行尾为空格,两组输出之间无空行。

输入范例 :

2
1
100

输出范例 :

2
1
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

 

思想:这题有时间复杂度要求。按位计算,然后累加进位,比如9*9,结果是81,那么先取余得1,放在个位,然后进位/10,得8,累加到十位。

复制代码
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num, i, j, k;
    while (scanf("%d", &num) != EOF)
    {
        int res[10000] = {0};
        res[0] = 1;
        int cur, temp;
        int len = 1;
        if (num == 0 || num == 1)
        {
            printf("1\n");
        }
        else if (num == 2)
        {

            printf("2\n");
        }
        else
        {
            int flag;
            for (i = 2; i <= num; i++)
            {
                for (j = 0; j < len; j++)
                {
                    temp = res[j] * i + flag;
                    res[j] = temp % 10;
                    flag = temp / 10;
                    if (flag != 0 && j == len - 1)
                    {
                        len++;
                    }
                }
            }
            for (i = len - 1; i >= 0; i--)
            {
                printf("%d", res[i]);
            }
            printf("\n");
        }
    }

    return 0;
}
复制代码

 

posted @   梦想是能睡八小时的猪  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示