题目描述:

  请设计一个算法完成两个超长正整数的加法。

输入

  输入两个字符串数字

输出

  输出相加后的结果,string型

样例输入

  99999999999999999999999999999999999999999999999999 1

样例输出

  100000000000000000000000000000000000000000000000000

思路:

  在Java中,这样的大数运算可以直接用BigInteger类中的方法来进行运算和处理,那样本题没有任何意义了

  因此在本方法中,不直接采用该类中的方法进行运算,直接在字符串中进行逐位运算的方法来得到结果

 import java.util.Scanner;

 /**
* 请设计一个算法完成两个超长正整数的加法。
输入
  输入两个字符串数字
输出
  输出相加后的结果,string型
样例输入
  99999999999999999999999999999999999999999999999999 1
样例输出
  100000000000000000000000000000000000000000000000000
*
*/
public class BigDataAdd { public static void main(String[] args) {
//输入,读取两个字符串
Scanner cin = new Scanner(System.in) ;
String num1 = cin.next() ;
String num2 = cin.next() ;
cin.close() ; System.out.println(addBigdata(num1,num2)); } /**
* 该方法完成运算,返回字符串结果
* @param num1
* @param num2
* @return
*/
private static String addBigdata(String num1, String num2) {
int last = 0 ;
//用StringBuilder来添加运算结果
StringBuilder sb = new StringBuilder() ;
int len1 = num1.length() ;
int len2 = num2.length() ;
int now1 ; //保存字符串num1中当前运算的 位 的值
int now2 ;
int res ; //保存当前位的运算结果
for(int i = len1-1, j = len2-1 ; i >= 0 || j >= 0; i--,j--){
//获取当前num1的当前运算位的值,
//当最高位超过本串的长度时,设为0
if( i >= 0){
now1 = num1.charAt(i) - '0' ;
}else{
now1 = 0 ;
}
//获取当前num2的当前运算位的值,当最高位超过本串的长度时,设为0
if( j >= 0){
now2 = num2.charAt(j) - '0' ;
}else{
now2 = 0 ;
}
//计算结果,两个当前位以及进位值相加
res = now1 + now2 + last ;
//当当前位的计算结果大于等于10时需要进位,
//置进位标志位1,保存的计算结果则取个位的值
if(res >= 10){
last = 1 ;
res = res - 10 ;
}
sb.append(res) ; res = 0 ;
}
//最高位运算结束后,若有进位,则应保存结果
if(last != 0){
sb.append(last) ;
}
//上面的结果是从个位一次向高位保存的,
// 所以正在的结果需要反转一下
return sb.reverse().toString() ;
}
}

Code

华为OJ平台——超长正整数相加的更多相关文章

  1. 华为OJ平台——字符串分隔

    题目描述: 连续输入字符串,请按长度为8拆分每个字符创 后输出到新的字符串数组: 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理 输入 连续输入字符串(输入两次,每个字符长长度小于100)输 ...

  2. 华为OJ平台——输出最小的k个数

    输入n个整数,输出其中最小的k个. 详细描述: 接口说明 原型: bool GetMinK(unsignedint uiInputNum, int *pInputArray, unsignedint ...

  3. 华为OJ平台——矩阵乘法

    题目描述: 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C. 输入: 1.第一个矩阵的行数 2.第一个矩阵的列数(也是第二个矩阵的行数) 3.第二个矩阵 ...

  4. 华为OJ平台——完美数

    import java.util.Scanner; /** * * 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数. * 它所有的真因子(即除了自身以外的约数)的和(即 ...

  5. 华为OJ平台——将真分数分解为埃及分数

    题目描述: 分子为1的分数称为埃及分数.现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数.如:8/11 = 1/2+1/5+1/55+1/110. 输入: 输入一个真分数, ...

  6. 华为OJ平台——百钱买百鸡问题

    题目描述: 元前五世纪,我国古代数学家张丘建在<算经>一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一. 百钱买百鸡,问鸡翁.鸡母.鸡雏各几何? 思路: 这道题很简单,假 ...

  7. 华为OJ平台——密码强度等级

    题目描述: 密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分. 一.密码长度: 5 分: 小于等于4 个字符 10 分: 5 到7 字符 25 分: 大于等于8 个字符 二.字母: 0  ...

  8. 华为OJ平台——求最大连续bit数

    题目描述: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 输入: 一个byte型的数字    输出: 对应的二进制数字中1的最大连续数 思路: ...

  9. 华为OJ平台——统计字符串中的大写字母

    题目描述: 统计字符串中的大写字母的个数 输入: 一行字符串 输出: 字符串中大写字母的个数(当空串时输出0) 思路: 这一题很简单,直接判断字符串中的每一个字符即可,唯一要注意的一点是输入的字符串可 ...

随机推荐

  1. 移动Oracle的用户表空间文件方法

    原文:http://www.linuxidc.com/Linux/2014-07/104702.htm 1.以sys用户登录        sqlplus /nologSQL>connect s ...

  2. /proc 文件系统

    linux提供了一种特殊的文件系统procfs,通常以/proc目录的形式呈现.该目录中包含了许多特殊文件用来对驱动程序和内核信息进行更高层的访问.只要应用程序有正确的访问全息,就可以通过读写这些文件 ...

  3. Hibernate与MyBatis区别

    Hibernate是当前主流的ORM框架,对数据库结构提供了较为完整的封装. MyBatis同样也是非常流行的ORM框架,主要在于pojo与SQL之间的映射关系. 区别: 1.两者最大的区别 针对简单 ...

  4. CXF发布restful WebService的入门例子(服务器端)

    研究了两天CXF对restful的支持.   现在,想实现一个以 http://localhost:9999/roomservice 为入口, http://localhost:9999/roomse ...

  5. FindViewByMe插件

    FindViewByMe 是一个自动生成 FindViewById 代码的 IDEA/Android Studio 插件, 支持 Activity.Fragment 和 ViewHolder 中的 f ...

  6. [JavaWebService-axis]-环境搭建

    一.准备 1.下载环境需要的zip包 JDK Eclipse axis(http://axis.apache.org/axis2/java/core/download.html)(axis2-1.7. ...

  7. jQuery图片延迟加载插件jQuery.lazyload

      插件描述:jQuery图片延迟加载插件jQuery.lazyload,使用延迟加载在可提高网页下载速度.在某些情况下,它也能帮助减轻服务器负载. 使用方法 引用jquery和jquery.lazy ...

  8. $.ajax()中dataType

    $.ajax()中dataType的默认值为TEXT,如果没有指明json,而返回来的数据又就是json格式,则无法显示.!!

  9. 转: Ubuntu 安装字体方法

    命令安装:   以微软雅黑字体为例(其他的宋体.黑体等点阵字体都一样的),我们的雅黑字体文件是:Yahei.ttf(放在自己的主目录下)(在widows目录的Fonts目录下找需要的字体)由于我是双系 ...

  10. C#命名空间“Microsoft.Office”中不存在类型或命名空间名称的终极解决方法

    源地址:http://blog.csdn.net/zhu2695/article/details/41852267