首页 > 代码库 > 求sum=1+111+1111+........+1....111 .
求sum=1+111+1111+........+1....111 .
1,思路
大数相加,若直接使用int,或者long都会超出长度,因此考虑使用String存储。
2,代码
public class LargeNumAdd{ public static void main(String[] args) { String sum = "0"; for (int i = 1; i <= 2009; i++) { String temp = getStr(i); sum = getSum(sum, temp); } System.out.println("sum: " + sum); } public static String getSum(String a, String b) { if (a.length() > b.length()) { for (int i = b.length(); i < a.length(); i++) { b = ‘0‘ + b; } } else { for (int i = a.length(); i < b.length(); i++) { a = ‘0‘ + a; } } char array1[] = a.toCharArray(); char array2[] = b.toCharArray(); String sum = ""; int carrayIn = 0; for (int i = a.length() - 1; i >= 0; i--) { sum = getRemain(array1[i], array2[i], carrayIn) + sum; carrayIn = getCarry(array1[i], array2[i], carrayIn); } return sum; } public static String getRemain(char a, char b, int carrayIn) { int sum = (a - ‘0‘) + (b - ‘0‘) + carrayIn; String rem = sum % 10 + ""; return rem; } private static int getCarry(char a, char b, int carryIn) { int sum = (a - ‘0‘) + (b - ‘0‘) + carryIn; int carry = sum / 10; return carry; } public static String getStr(int N) { String s = ""; for (int i = 0; i < N; i++) { s += "1"; } return s; }}
求sum=1+111+1111+........+1....111 .
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。