• UVA 10106 Product (大数相乘问题)


            简单的模拟了下乘法,效率不高。记得以前见过有个模板是4位相乘模拟的。

    #include <stdio.h>
    #include <string.h>
    
    void add(int sum[], int c[], int n) {
        int cp = 0;
        for (int i=0; i<n; i++) {
            int tmp = sum[i] + c[i] + cp;
            sum[i] = tmp % 10;
            cp = tmp / 10;
        }
        if (cp)
            sum[n] = cp;
    }
    
    void mul(char str1[], char str2[]) {
        int a[550], b[550], c[550], sum[550];
    
        int l1 = strlen(str1);
        int l2 = strlen(str2);
    
        for (int i=0; i<l1; i++)
            a[i] = str1[l1-1-i] - '0';
        for (int i=0; i<l2; i++)
            b[i] = str2[l2-1-i] - '0';
    
        memset(sum, 0, sizeof (sum));
        for (int i=0; i<l1; i++) {
            memset(c, 0, sizeof (c));
            for (int j=0; j<l2; j++)
                c[i+j] = a[i]*b[j];
    
            add(sum, c, i+l2);  // 模拟了下乘法
        }
    
        int n = l1 + l2;
        while (!sum[n] && n) {
            n--;
        }
    
        for (int i=0; i<=n ;i++)
            str1[i] = sum[n-i] + '0';
        str1[n+1] = '\0';
    }
    
    int main() {
        char str1[550], str2[550];
    
        while (scanf("%s%s", str1, str2) != EOF) {
    
            mul(str1, str2);
    
            printf("%s\n", str1);
        }
    
        return 0;
    }
    


     

  • 相关阅读:
    Java 条件语句
    Java循环
    Java 变量
    Java 数据类型
    nginx+php发布网站
    安装MySQL5.7
    docker-compose参数
    部署
    dockerfile编写
    在VMware中安装CentOS7
  • 原文地址:https://www.cnblogs.com/zcube/p/4194562.html
Copyright © 2020-2023  润新知