ZZULIOJ 1089:阶乘的最高位(C语言)

ZZULIOJ【1089】阶乘的最高位:(int类型)

1089: 阶乘的最高位

1089: 阶乘的最高位
时间限制: 1 Sec 内存限制: 128 MB

题目描述

输入一个正整数n。输出n!的最高位上的数字。
输入:输入一个正整数n(n不超过1000)。
输出:输出n!的最高位上的数字。
样例输入:1000
样例输出:4
提示:注意double类型溢出问题。

思路

很明显我无视了最重要的提示,
加上学艺不精想不到1000!这么大的数该怎么表示,
然后就想到了数组,简单来说就是把十进制的每一位都用一个数来表示(感觉相当麻烦)

仅供参考!!!

#include<stdio.h> 
int main()
{
	int n,a[3000]={1},i,k,t,l=1,m;	//数组越大可以算的数也越大
	scanf("%d",&n);
	for(i=1;i<=n;i++) 
	{
		t=0;
		for(k=0;k<l;k++)			
		{
			m=a[k]*i;						
	    	a[k]=(m+t)%10;			
			t=(m+t)/10;				
			if(t!=0&&k==l-1) l++;
		}
	}
	printf("%d",a[l-1]);
}

本人第一次写博客,还请大家多多指正,感谢!

你可能感兴趣的:(ZZULIOJ 1089:阶乘的最高位(C语言))