C/C++解法
标签: 机试攻略 - 高分篇
学习人数: 20.9k


高清播放
赞赏支持

C/C++可以通过模拟的方法解决高精度的问题,但是我们不是特别建议在考试的时候自己手动去模拟大整数的问题,这样很容易出现失误。
当然,如果是很简单的加减法运算,用C/C++模拟也是挺不错的,毕竟更换IDE也挺麻烦的。

 

下面给出C/C++大数加法的代码

#include <iostream>  
#include <string>  
#include <algorithm>  
using namespace std;  
  
string Add(string a, string b) {  
    //a一直为位数较长的字符串  
    if (a.length() < b.length()) a.swap(b);  
  
    string result(a.length(), 0);  //初步设置result长度为较长字符长度  
    b.insert(0, a.length() - b.length(), '0'); //较短的字符串前面补零方便计算 
    int carry = 0;  //进位  
    for (int i = a.length() - 1; i >= 0; i--) {  
        int sum = (a[i] - 48) + (b[i] - 48) + carry;  
        carry = sum / 10;  
        result[i] = sum % 10 + 48;  
    }  
    //若进位不为0,还要在前面补上进位  
    if (carry != 0) {  
        result.insert(result.begin(), carry + 48);  
    }  
    return result;  
}  
  
int main() {  
    string a, b;  
    while (cin >> a >> b)  
        cout << Add(a, b) << endl;  
    return 0;  
}  

 

登录查看完整内容


课后作业

掌握C/C++解法


登录后开始许愿

暂无评论,来抢沙发