zoukankan      html  css  js  c++  java
  • 高精度计算

    一. 利用字符串的一维数组方法逐位运算:

    高精度加法:

    思路很简单,通过数组储存每一位数,然后相加进位。

    #include <stdio.h>
    #include <string.h>
    
    int main() {
        char a[510] = { 0 }, b[510] = { 0 };
        int a1[510] = { 0 }, b1[510] = { 0 };
        int len_a, len_b;
        int i;
        scanf("%s%s", &a, &b);
        len_a = strlen(a); len_b = strlen(b);
    
        for (i = 0; i < len_a; i++) {
            a1[i] = a[len_a - i - 1] - '0';
        }
        for (i = 0; i < len_b; i++) {
            b1[i] = b[len_b - i - 1] - '0';
        }
        
        len_a = (len_a > len_b) ? len_a : len_b;
    
        for (i = 0; i <= len_a; i++) {
            a1[i] += b1[i];
            if (a1[i] >= 10) {
                a1[i] = a1[i] % 10;
                a1[i + 1]++;
            }
        }
    
        for (int j = len_a; j >= 0; j--) {
            if (j==len_a&&a1[j] == 0) continue;
            printf("%d", a1[j]);
        }
        
        return 0;
    }

    其中几个关键点:1.另外创建两个数组进行倒序存储,方便同位对其。

            2.用字符串接受数,便于比较长度,注意字符串转化为数组时,要使用 -'0' 的操作。

  • 相关阅读:
    csp-2020-s游记
    线性DP
    tarjan无向图
    tarjan有向图
    树前置知识普及
    hash
    可持久化线段树&主席树
    [HAOI 2015] 树上染色
    [Contest on 2020.11.24] Beetle
    [Contest on 2020.11.24] Candy
  • 原文地址:https://www.cnblogs.com/porest/p/14150937.html
Copyright © 2011-2022 走看看