高精度问题之大数相加
2015-07-28 09:11
459 查看
AC代码如下:
解题心的: 就是基本的一对一模拟手算。。借助c++的string 不用逆序运算了。很方便的补0. 最后处理下前导0的问题。
#include <iostream> #include <string> using namespace std; // 实现大数相加 结果存放在num中 void bigIntergerAdd(string &num, string add) { int goBit = 0; // 存放进位 // 先交换下顺序 加数的位数要比较少 if (num.length() < add.length()) { string tmp = num; num = add; add = tmp; } string tmp (num.length() - add.length(), '0'); add = tmp + add; // 利用string的+号特性 不采用逆序相加法 int len1 = num.length(), len2 = add.length(); for (int i = len1 -1 ; i>= 0; --i) { int tmp = ((num[i] - '0') + (add[i] - '0') + goBit) ; num[i] = tmp% 10 + '0'; goBit = tmp/10; } // 特殊情况处理 if (goBit != 0) num.insert(0, string(1, (char)goBit +'0')); } int main(int argc, char** argv) { string s1; string result; int i =0; while (cin>> s1) { if (s1 == "0") { cout<< result<< endl; break; } if (i ==0) { i=1; result = s1; } else bigIntergerAdd(result, s1); } return 0; }
解题心的: 就是基本的一对一模拟手算。。借助c++的string 不用逆序运算了。很方便的补0. 最后处理下前导0的问题。
相关文章推荐
- Android 屏幕旋转时Activity的生命周期
- HDU - 1358 - Period (KMP)
- vector的reserve(),resize(),capacity()
- Java内存模型
- PHPStorm的资料网址
- POP介绍与使用实践(快速上手动画)
- 源码推荐(7.28):习惯了的Sqlite,自己动手造一个可以深度自定义的图片选择器
- android网络操作I: OkHttp, Volley以及Gson
- Core Graphics Tutorial Part 3: Patterns and Playgrounds
- final、static关键字
- 【HDOJ 1150】Machine Schedule
- 【图文教程】如何将Apple Watch应用提交到App Store
- iOS可持续化集成: Jenkins+bundler+cocoapods+fastlane
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- mybatis 配置文件mysql常用语句写法总结
- uva 639 Don't Get Rooked ( 回溯 )
- Android基础_页面布局_TableLayout(表格布局)
- 使用Playground学习数值算法
- java.lang.NoClassDefFoundError: org/slf4j/Logger
- Javascript bind 与 jQuery bind