大数加法

思路:1.将两个大数分别存入两个字符串数组中,倒序放入两个整型数组中。

   2.在加法运算时,一一对应相加放入ans[ ],满十进一,记录len_ans。

   3.判断要不要保留最高位。

int temp_a[1005];
int temp_b[1005];
int ans[1005] = {0};
void add(string a, string b){
    int len_a = 0;
    for(int i = a.length() - 1; i >= 0; i--){
        temp_a[len_a++] = a[i] - '0';
    }
    int len_b = 0;
    for(int i = b.length() - 1; i >= 0; i--){
        temp_b[len_b++] = b[i] - '0';
    }
    int len = (len_a > len_b)? len_a : len_b;
    int k = 0;
    for(int i = 0; i < len ; i++){
        ans[k] += (temp_a[i] + temp_b[i]) % 10;
        ans[k + 1] += (temp_a[i] + temp_b[i]) / 10;
        k++;
    }
    if(ans[k] != 0){
        cout << ans[k];
    }
    for(int i = k - 1; i>= 0; i--){
        cout << ans[i];
    }
    cout << endl;
}
View Code

 

posted @ 2020-03-02 14:02  天子笑!分你一坛  阅读(156)  评论(0编辑  收藏  举报