zoukankan      html  css  js  c++  java
  • 刷题-计算阶乘(大数的存储)

    题目来源:http://47.106.114.75/problem/558
    题目描述:
    Problem Description
    给定一个整数N(0 ≤ N ≤ 10000),要求计算N的阶乘。

    Input
    每个N占一行,直到文件尾。

    Output
    对于每个N,输出N的阶乘,占一行。

    Sample Input

    1
    2
    3
    

    Sample Output

    1
    2
    6
    

    代码:

    #include <stdio.h>
    
    int main()
    {
    	int i, j,k;
    	int N;
    	while(~scanf("%d/n",&N))
    	{
    		int a[50000];//用数组存值,阶乘的值为大数
    		memset(a,0,sizeof(a)); //数组初始化
    		a[0] = 1;
    		int digit = 1;// 结果的位数
    		int up =0; //进位 
    		int temp; 
    		for(i = 2; i <= N; i++)   //求阶乘  
    		{
    			for(j = 0; j < digit; j++) //当前值的每一位乘阶乘的数,例如13*8->3*8->1*8+2
    			{
    				temp = a[j] * i + up;
    				a[j] = temp % 10;
    				up = temp / 10;
    			}
    			while(up)                 //如果最高位有进位,将最高位存入
    			{
    				a[digit] = up % 10;
    				up = up / 10;
    				digit++;
    			}
    		}
    		for(i = digit - 1; i >= 0 ;i--) 
    		{
    			printf("%d",a[i]);
    		}
    		printf("
    ");
    	}
    }
    
  • 相关阅读:
    mac 安装ROS2
    193 最长有效括号
    个人笔记
    个人笔记
    个人笔记-大佬主页
    笔记-吴恩达老师机器学习及深度学习
    个人笔记
    转载-资源链接
    枚举类型
    333333333333333333333333
  • 原文地址:https://www.cnblogs.com/ZigHello/p/14100094.html
Copyright © 2011-2022 走看看