• 9-大数阶乘


    链接:https://www.nowcoder.net/acm/contest/75/E
    来源:牛客网

    时间限制:C/C++ 3秒,其他语言6秒
    空间限制:C/C++ 32768K,其他语言65536K
    64bit IO Format: %lld

    题目描述

    给定一个整数N(0≤N≤10000),求取N的阶乘

    输入描述:

    多个测试数据,每个测试数据输入一个数N

    输出描述:

    每组用一行输出N的阶乘
    示例1

    输入

    1
    2
    3

    输出

    1
    2
    6

    思路:就是一个大数阶乘问题,就是数据有点大,可能无法确定数组大小,可以用斯特灵公式计算n最大是阶乘的位数,避免越界,类似的求阶乘位数例题:http://www.cnblogs.com/zhumengdexiaobai/p/8409127.html

    #include <stdio.h>
    
    void jiecheng(int a[37000], int n, int *len){
    	int i, j, q = 0;
    	int alen = *len;
    	alen = 1;
    	a[0] = 1;
    	for(i = 1; i <= n; i++)
    	{
    		for(j = 0; j < alen; j++)
    		{
    			a[j] = a[j] * i + q; 		
    			q = a[j] / 10;
    			a[j] = a[j] % 10;
    		}
    		while(q > 0){
    			alen++;
    			a[j]= q % 10;
    			q = q / 10;
    			j++;
    		}
    		
    	}
    	*len = alen;
    }
    
    
    int main(){
    	int a[37000], n, i, len;  //位数不会超过3600 
    		
    	while(scanf("%d", &n) != EOF){
    		if(n == 0)
    			printf("0
    ");
    		else{
    			jiecheng(a, n, &len);
    			for(i = len - 1; i >= 0; i--)
    				printf("%d", a[i]);
    			printf("
    ");
    		}
    		
    	}
    	return 0;	
    } 
    

      

  • 相关阅读:
    hadoop
    flume
    IP地址查询
    flinkStreamSQL
    StreamSets
    Algorightm----DynamicProgramming
    google
    vue学习
    使用Webstorm快速启动Vue项目配置
    数据库——关系代数中的除法运算【转】
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/8414698.html
Copyright © 2020-2023  润新知