精华内容
下载资源
问答
  • 高精度乘法

    2017-09-09 10:51:45
    高精度乘法


    模板

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int i,j,k;
        int n,a[100010];
        a[0]=1;
        int cnt=1;
        int temp;
        while(scanf("%d",&x)!=EOF)
        {
            int jin=0; //进位 
            for(j=0;j<cnt;j++){
                temp=a[j]*x+jin;	//每一位乘 
                a[j]=temp%10;
                jin=temp/10;
            }
            while(jin){  //高位 
                a[cnt++]=jin%10;
                jin/=10;
            }
            for(i=cnt-1;i>=0;i--){
                printf("%d",a[i]);
            }
            printf("\n");
        }
        return 0;
    }


    这个模板是不断乘x的。


    这里以阶乘为例  HDU 1042

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int i,j,k;
        int n,a[100010];
        while(scanf("%d",&n)!=EOF)
        {
            a[0]=1;
            int cnt=1;
            int temp;
            for(i=1;i<=n;i++){
            	int jin=0; 
                for(j=0;j<cnt;j++){
                    temp=a[j]*i+jin;
                    a[j]=temp%10;
                    jin=temp/10;
                }
                while(jin){
                    a[cnt++]=jin%10;
                    jin/=10;
                }
            }
            for(i=cnt-1;i>=0;i--){
                printf("%d",a[i]);
            }
            printf("\n");
        }
    
        return 0;
    }
    


    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,464
精华内容 985
关键字:

高精度乘法