zoukankan      html  css  js  c++  java
  • 【刷题小记28】大数阶乘

    描写叙述
    我们都知道怎样计算一个数的阶乘,但是,假设这个数非常大呢,我们该怎样去计算它并输出它?
    输入
    输入一个整数m(0<m<=5000)
    输出
    输出m的阶乘,并在输出结束之后输入一个换行符
    分析:非常明阶乘的数比較大。用int会溢出,所以採用int数组的方法,用数组的元素来保存每一位,依据乘法的相乘规则。用数组元素的每一位去乘迭代

    #include <iostream>
    #include <cstring>
    #include <cstdlib>
    using namespace std;
    
    int main()
    {
    	int arr[20000];
    	memset(arr,0,sizeof(arr));
    	int m;
    	int count = 0;
    	cin >> m;
    	arr[0] = 1;
    	for (int i = 2; i <= m; i++)
    	{
    		for (int j = 0; j < 20000; j++)
    		{
    			count = arr[j] * i + count;
    			arr[j] = count % 10;
    			count = count / 10;
    		}
    	}
    	int i;
    	for (i = 20000 - 1; !arr[i];i--);
    	for (; i >= 0;i--)
    	{
    		cout << arr[i];
    	}
    	cout << endl;
    	return 0;
    }


  • 相关阅读:
    编码
    浏览器翻页
    验证码识别
    时间
    phantomjs配置
    产品
    java范型的理解
    使用JDBC连接数据库
    垃圾回收机制
    java的内存区域 && java内存模型
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6733177.html
Copyright © 2011-2022 走看看