⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 [1042]n!.cpp

📁 HDUOJ_ACM题目集合~~希望各位能用得上
💻 CPP
字号:
// [1042]N!.cpp : 定义控制台应用程序的入口点。
//

/*
#include <stdio.h>
#define MAX 100000//传统6存1算法
int main()
{
    int n;
    while (scanf("%d",&n)!=EOF)
    {
        if(n==0)//0!规定为1
        {
            printf("1\n");
            continue;
        }
        int s[10000]={0};
        s[0]=1;
        int i,j,k=0,sj;//k用来控制占用的数组范围
        for(i=1;i<=n;i++)
        {
            sj=0;
            for(j=0;j<=k;j++)
            {
                s[j]=s[j]*i+sj;
                sj=s[j]/MAX;
                s[j]%=MAX;
            }
            if(sj)
            {
                k++;
                s[k]=sj;
            }
        }
        printf("%u",s[k]);
        for(i=k-1;i>=0;i--)
        {
            j=10;
            printf("%05d",s[i]);
        }
        printf("\n");
    }
    return 0;
}
*/


#include "stdafx.h"
#include "stdio.h"

#define MAX_SIZE 30000
#define W 100000


int main()
{
	int n;
	int i, j;
	while (scanf("%d",&n) != EOF)
	{
		int re[MAX_SIZE] = {0};
		int k = 0, jw;
		if (n == 0)
		{
			printf("1\n");
			continue;
		}
		re[0] = 1;
		for (i = 1; i <=n; i++)
		{
			jw = 0;
			for (j = 0; j <= k; j++)
			{
				re[j] = re[j] * i + jw;
				jw = re[j] / W;
				re[j] %= W;
			}
			if (jw)
			{
				k++;
				re[k] = jw;
			}
		}
		printf("%d",re[k]);
		for (i = k-1; i >= 0 ; i--)
			printf("%05d",re[i]);
		printf("\n");
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -