zoukankan      html  css  js  c++  java
  • 大整数阶乘乘法

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<stdlib.h>
    using namespace std;
    char a[100000],b[100000],c[100000];
    int x[100000],y[100000],z[100000];
    
    int Muti()
    {
        memset(z,0,sizeof(z));
        memset(x,0,sizeof(x));
        memset(y,0,sizeof(y));
        int len1 = strlen(a);
        int len2 = strlen(b);
        int k =len1 + len2;
        for(int i=0;i<len1;i++) x[i] = a[len1-i-1] - '0';
        for(int i=0;i<len2;i++) y[i] = b[len2-i-1] - '0';
        for(int i=0;i<len1;i++)
        {
            for(int j=0;j<len2;j++)
            {
                z[i+j] += x[i] * y[j];
            }
        }
        for(int i=0;i<=k;i++)
        {
            if(z[i]>=10)
            {
                z[i+1] += z[i] / 10;
                z[i] = z[i] % 10;
            }
        }
        int s = k;
        while(z[s]==0) s--;
        if(s<0)
        {
            memset(a,0,sizeof(a));
        }
        else
        {
            int cont = 0;
            for(int j=s;j>=0;j--)
            {
                int u = z[j];
                a[cont++] = (char)(u+'0');
            }
        }
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        memset(a,0,sizeof(a));
        sprintf(a,"%d",1);
        for(int i=2;i<=n;i++)
        {
            memset(b,0,sizeof(b));
            sprintf(b,"%d",i);
            Muti();
        }
        printf("%s
    ",a);
        return 0;
    
    }
  • 相关阅读:
    cin、cout、cerr、clog------c++ Primer Plus
    c++ 用new后delete,而继续输出指针后果 new/new[]/delete/delete[]区别
    c++类
    c++内联 inline
    c++ 委托构造函数
    c++ explicit
    activti表结构
    工作流设计
    问题解决
    grep 命令
  • 原文地址:https://www.cnblogs.com/Leozi/p/10835108.html
Copyright © 2011-2022 走看看