HD-ACM算法专攻系列(5)——N!

题目描述:

源码:

#include"iostream"
using namespace std;

int main()
{
	int n, digit, carry, tmp;
	int a[40000];
	while(cin>>n)
	{
		if(n <= 1)
		{
			cout<<1<<endl;
		}
		else
		{
			a[0] = 1;
			digit = 1;
			for(int i = 2; i <= n; i++)
			{
				carry = 0;
				for(int j = 0; j < digit; j++)
				{
					tmp = a[j] * i + carry;
					a[j] = tmp % 10;
					carry = tmp / 10;
				}
				while(carry > 0)
				{
					a[digit] = carry % 10;
					digit++;
					carry /= 10;
				}
				
			}
			for(int j = digit - 1; j >= 0; j--)
			{
					cout<<a[j];
			}
			cout<<endl;
		}
	}
    return 0;
}

  

原文地址:https://www.cnblogs.com/forcheng/p/7634862.html