10000的阶乘是多少

我们首先要明确123*9如何算?

3*9=27,进位2,数值为7
2*9=18,18+进位2=20, 故进位2,数值0
1*9=9,9+2=11,数值11
故答案为1107

主要思想
a*b:
我们将a的各个位数保存在数组中,然后分别乘以b,在加以进位运算即可。

比如123*21,保存到数组中an[1]=3,an[2]=2,an[3]=1,
先从个位开始乘,即an[1]*21=63,进位6,数值3,操作为an[1]=3,
an[2]*21=42,42+进位6=48, 故进位4,数值8,操作为an[2]=8,
an[3]*21=21,21+进位4=25,数值为25,操作为an[3]=5,an[4]=2
故最终为2583
#include<stdio.h>
int main(void)
{
	int n;
	n=11;
	int ans[10000]={0};//答案保存时,位数低的在左边 
	int size=1;//乘到现在,有几位数 
	int bit=0;//进位的数
	ans[1]=1; 
	for(int i=2;i<=n;i++)//阶乘到n 
	{
		for(int j=1;j<=size;j++)//每个新数i乘以当前答案 ,乘的顺序 个 十 百 
		{
			int tep=ans[j]*i+bit; 
			bit=tep/10; //进位的值
			ans[j]=tep%10; //要保存的数值
		}
		while(bit)  //更新位数的同时将进位保存
		{
			ans[++size]=bit%10;
			bit/=10;
		}
	}
	for(int i=size;i>=1;i--)//输出
	{
		printf("%d",ans[i]);
	}
	printf("\n");
 } 

参考

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值