已解决 用C++如何求n!的阶层 任意输入一个数,得到它的阶层,应 该怎么做? 要完整的,可编译运

已解决用C++如何求n!的阶层任意输入一个数,得到它的阶层,应该怎么做?要完整的,可编译运行的用while循环语句... 已解决
用C++如何求n!的阶层
任意输入一个数,得到它的阶层,应
该怎么做?
要完整的,可编译运行的
用while循环语句
展开
 我来答
fistlong
2013-10-22 · 超过30用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:70.6万
展开全部
#include <iostream>
#include <string>

using namespace std;

string ride(string numA,string numB)
{
    char str1[100000],str2[5];  
strcpy(str1,numA.data());
strcpy(str2,numB.data());
    int i,j,len1,len2,len;  
    bool flag=false;  
    len1=strlen(str1);  
    len2=strlen(str2);  
    int *a=new int[len1];  
    int *b=new int[len2];  
    len=len1*len2+1;  
    int *result= new int[len];  
    for(i=0;i<len;i++)  
        result[i]=0;  
    for(i=0;i<len1;i++) //将字符串转换为整数,并倒置过来  
        a[i]=str1[len1-1-i]-'0';  
    for(i=0;i<len2;i++)  
        b[i]=str2[len2-1-i]-'0';  
    for(i=0;i<len1;i++)  //乘法竖式计算
    {  
        for(j=0;j<len2;j++)  
            result[i+j]+=a[i]*b[j];  
    }  
    for(i=0;i<len;i++)   //处理进位的情况  
    {  
        if(result[i]>9)  
        {  
            result[i+1]+=result[i]/10;  
            result[i]%=10;  
        }  
    }  
int index = 0;
char result1[100005]; 
    for(i=len-1;i>=0;i--)  
    {  
        if(flag)  
{
result1[index] = result[i] + '0';
index++;
}
        else if(result[i]!=0)  
        {  
result1[index] = result[i] + '0';
index++;
            flag=true;  
        }  
    }  
result1[index] = '\0';
    delete []a;  
    delete []b;   
    return result1; 
}

string GetFactorial(int n)
{
string factorial = "1";
for(int i = 2;i <= n;i++)
{
char buf[6];
sprintf(buf, "%d", i);
string b = buf;
factorial = ride(factorial,b);
}
return factorial;
}

int main()
{   
int n;
cout<<"输入n:";
cin>>n;
string result = GetFactorial(n);
cout<<"结果为:"<<result<<endl;
return 0;
}

 用到了大数相乘可以算至少1~5000内的阶乘如果不用大数的话应该在1~15左右

更多追问追答
追问
不好意思啊   你这个我好想还没学到
追答
其实就是小学时候的乘法竖式计算啊,采不采纳事情无所谓的也不能拿来吃.只是给你一个参考,能帮到你就好.
你不知道的细节
2013-10-22 · TA获得超过3.5万个赞
知道大有可为答主
回答量:7486
采纳率:61%
帮助的人:3370万
展开全部
#include<iostream>
using namespace std;
int main()
{
int n,sum=1,m=1;
cout<<"输入一个数求其阶乘"<<endl;
cin>>n;
while(m<=n)
{
sum=sum*m;
m++;
}
cout<<sum<<endl;
return 0;
}

求采纳!
追问
谢谢
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式