N的阶乘

//此题非常简单,想想乘法是怎么运算的,阶乘数乘上原有的数的每一位就行了。
//但是数太大,那么我们让这个数的每一位放在数组里的每一个存单元就行了。
//在程序中,采用%来计算当前位的值,用/来计算进位值。=
//就是每个存储单元只放个位数的表示,如10 只放1 
#incldue<stdio.h>
#define N 10
int main()
 {	  
	  int a[3000],i,j,k;  			//数组开大一点
	  a[0]=1;							//一定要初始数组a,
	  int n=10;  
	  int wei=0;  						//从0开始计算。
	  	  
	  for (i=2;i<=n;i++)           	//控制下一个阶乘数。
	  {  
		  int jinwei=0;  
		  		   
	   	for (j=0;j<=wei;j++)  		   	//下一阶乘数,分别与原有数的每一位相乘。
	   	{   
		    int w=a[j]*i+jinwei;       
		    a[j]=w%N;  //当前位的值, 
		    jinwei=w/N;  
	        }  
	   	while(jinwei>0)  				   //调整wei 的值,进位。
	   	{  
		    wei++;  
		    a[wei]=jinwei%N;  
		    jinwei/=N;  
	   	}  
	  }  
	  
	  for (k=wei;k>=0;k--)  
	  {  
		  printf("%d",a[k]);  	  
	  }  
	 return 0;
 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值