1. 程式人生 > >輸入n , 計算sum=1!+2!+3!+..........+n!的末6位(不含前導0)。

輸入n , 計算sum=1!+2!+3!+..........+n!的末6位(不含前導0)。

要求n<=10^6,n!表示前n個正整數之積。如輸入n=10;輸出37913

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    long long int sum=0,i=1,n,t=1,k=0;   //sum階乘和,k後6位數字。 
	cout<<"n=";
	cin>>n;
	while(i<=n)
	{
		t=t*i;                //i的階乘。 
		sum=sum+t;
		i++;
	}
	int a[6];        //用陣列儲存後6位數字。 
	for(i=0;i<6;i++)
	{
	  a[i]=sum%10;
	  sum/=10;	
	 } 
	for(i=0;i<6;i++)
	{
		k+=a[i]*(pow(10,i));
	 } 
	 cout<<"末六位為:"<<k<<endl;
	return 0;
 }