永发信息网

C语言高精度求阶乘,书中例子看不懂,acm菜鸟求救!!!!

答案:1  悬赏:10  手机版
解决时间 2021-03-31 21:12
  • 提问者网友:星軌
  • 2021-03-31 17:03
C语言高精度求阶乘,书中例子看不懂,acm菜鸟求救!!!!
最佳答案
  • 五星知识达人网友:上分大魔王
  • 2021-03-31 18:32
#include
#include
const int maxn=3000;
int f[maxn]; //用int 数组来存储 每一位的数值  如 123 则存储 为 {3,2,1,0...0}  存储方式是倒序的 根据代码看出来的
int main()
{
    int i,j,n;  //i,j为普通迭代变量 n 为求解的 n! 中的 n
    scanf("%d",&n);   
memset(f,0,sizeof(f));   
    f[0]=1;         //因为以后要用乘法 这里的个位 
    for(i=2;i<=n;i++)  // 重 n!中的 2 开始乘 直到n
    {
        int c=0;    //进位为0 
        //下面是一个大数乘法
        for(j=0;j        {
            int s=f[j]*i+c;  // 每一位都乘 i
            f[j]=s%10;          //每一位都只留下 个位数
            c=s/10;         //记下 进位的值 算到下一位的时候 加上
        }
    }
    //下面是输出大数
    for(j=maxn-1;j>=0;j--)
    if(f[j]) break;             //重最后都是0部分 用j记下第一个不是0 位数 集 最高位
    for(i=j;i>=0;i--)
    printf("%d",f[i]);      //重最高位 j 开始到 0 输出 每位数 

    return 0;
    // 结束
    //ps:  这道题只要明白 大数的乘法 就行了 其他部分都很简单的 
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯