求sum=1+111+1111+........+1....111 .
2014-09-20 18:46
429 查看
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+11+111+1111+ .... + 111...111(1024个1),sum有多少个1
- 输入一个数 可得到这个数的十次加如输入1 可算 1+11+111+1111.........(十次)
- 求 a+aa+aaa+.......+aaaaaaaaa=? 其中a为1至9之中的一个数,项数也可以指定? 思路:先求出 1+11+111+1111+11111+.....+111111111 的公式,然后参照公式进行编码
- 计算1+11+111+1111+........
- 求s=a+aa+aaa+aaaa+aa…a(n个a)之值,其中a是一个数字。例如:1+11+111+1111+...
- 1+11+111+1111+11111+……+11……11(2009个1)的和有多少个1?
- 面试题:1+11+111+1111+...+(2016个1)结果中含有多个6
- 求1+11+111+1111+...+n个1的和中有多少个1?
- 笔试题&面试题:求1+11+111+1111+...+n个1的和中有多少个1?
- Java学习笔记12:求s=1+11+111+1111+......+1111......1的值
- “清一色”数列1,11,111,1111,...
- UVa111
- Binary Tree Maximum Path Sum
- POJ 2739 Sum of Consecutive Prime Numbers(尺取法)
- Lintcode111——爬楼梯
- [leetcode]Binary Tree Maximum Path Sum
- DFS Sum Root to Leaf Numbers
- XOR CHECKSUM
- LintCode 139. Subarray Sum Closest
- LeetCode 3Sum