标题:<原创>关于求大数阶乘用数组方法实现
只看楼主
ljfljf2006
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-11
 问题点数:0 回复次数:0 
<原创>关于求大数阶乘用数组方法实现
前两天看到论坛里有人发了一段代码
用数组实现求大数阶乘
但发现还是有部分读者并不是非常明白
于是我把自己的代码加上注释 希望对那些还不是非常明白的读者有一点点帮助


首先请大家务必认真回忆一下自己是如何进行乘法运算的

#include "stdafx.h"
#include <iostream>
#define N 2000
using namespace std;
int main(int argc, char* argv[])
{
 int n,i,j,digit=0,temp=0,a[N];           /*数组a[N]用来存储运算结果,每一个元素只存储一个数字,a[digit]表示当前最高位*/
 a[0]=1;
 cin>>n;                                  /*输入所求阶乘*/
 for(i=2;i<=n;i++)                     /*该循环控制所要乘的数*/
 {
  for(j=0;j<=digit;j++)               /*该循环控制数组a[N]的每一个元素分别和当前n相乘*/
  {
   temp=a[j]*i+temp;                 /*将上次运算后向前进位的数和当前元素进行乘法运算后的结果相加*/
   a[j]=temp%10;                      /*将结果的最后一位保存在当前元素位置*/
   temp=temp/10;                     /*最后一位保存后,将其丢弃*/
  }
  while(temp!=0)                      /*将最后剩下的最高几位依次保存,并通过digit来记录运算结果最高位*/
  {
   a[++digit]=temp%10;
   temp=temp/10;
  }
 }
 for(i=digit;i>=0;i--)                 /*输出结果*/
  cout<<a[i];
 cout<<endl;
 return 0;
}
搜索更多相关主题的帖子: 大数阶乘 数组 int include digit 
2007-12-02 20:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-189937-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.142774 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved