找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 410|回复: 6

阶乘问题

[复制链接]
发表于 2009-11-4 01:55:09 | 显示全部楼层 |阅读模式 IP:江苏扬州
#include "stdio.h"
#include "iostream.h"

int main(int argc, char* argv[])
{
    int carry,n,j;
    int a[2000];
    int digit=1;
    int temp,i;
    cout<<"please enter n:"<<endl;
    cin>>n;
    a[0]=1;
    for(i=2; i<=n; i++)
    {
        for(carry=0,j=1; j<=digit; ++j)
        {
            temp=a[j-1]*i+carry;
            a[j-1]=temp%10;
            carry=temp/10;
        }
        while(carry)
        {
            //digit++;
            a[++digit-1]=carry%10;  
            carry/=10;
        }
    }
    cout<<"the result is:"<<endl;
    for(int k=digit; k>=1; --k)
        cout<<a[k-1];
    cout<<endl;
    return 0;
}

    这代码求的是大数的阶乘,就是LONG DOUBLE 都放不下的那种。 但我始终没有看明白,想请大家告诉一下思路是怎么样的。 谢谢
PS: 红色的地方我有疑问  ++ 在减1 不等于白加吗  可为什么出来的答案却不一样了?
发表于 2009-11-4 01:55:10 | 显示全部楼层 IP:江苏扬州
这是求大数的阶乘!
首先,你把语法正确:
#include <iostream>
using namespace std;
其次,具体过程这样理解:
a[]数组就是按位存放阶乘结果的
下标高的存放高位
carry是每位相乘的进位
可以举个例:6!
最后一步是120*6
a[0]=0 a[1]=2 a[2]=1
就是小学的乘法过程,自己理解吧!
回复

使用道具 举报

发表于 2009-11-4 01:55:11 | 显示全部楼层 IP:江苏扬州
caicaiha112 在 2008-9-8 10:23 的发言:

这是求大数的阶乘!
首先,你把语法正确:
#include <iostream>
using namespace std;


没必要非得这样写吧...
回复

使用道具 举报

发表于 2009-11-4 01:55:12 | 显示全部楼层 IP:江苏扬州
那你直接用std::cout也没人拦你啊
回复

使用道具 举报

发表于 2009-11-4 01:55:13 | 显示全部楼层 IP:江苏扬州
long long好像只够存到25的阶乘~然后爆了 嘿
回复

使用道具 举报

发表于 2009-11-4 01:55:14 | 显示全部楼层 IP:江苏扬州
好像不行,有数组越界的嫌疑,请先试一试再聊
回复

使用道具 举报

发表于 2009-11-4 01:55:15 | 显示全部楼层 IP:江苏扬州
caicaiha112 在 2008-9-8 10:23 的发言:

这是求大数的阶乘!
首先,你把语法正确:
#include
using namespace std;
其次,具体过程这样理解:
a[]数组就是按位存放阶乘结果的
下标高的存放高位
carry是每位相乘的进位
可以举个例:6!
最后一步是 ...

我稍微理解了一点你的思路,但笔算还是算不出来,就算是依次放入数组 那么下一次运算总需要上一次计算的值   可我找不出这个保存上一次阶乘值的变量,还有就是红色部分请教下`
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 05:34 , Processed in 0.264585 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表