华为2013机试题 大数相减JAVA实现
2013-09-14 16:29
274 查看
题目要求大概:
输入a,b两个大数,长度100以内,默认a>=b;不考虑其他情况;
例如:输入 1000000000000001
1
输出 1000000000000000
输入a,b两个大数,长度100以内,默认a>=b;不考虑其他情况;
例如:输入 1000000000000001
1
输出 1000000000000000
import java.util.Scanner; public class Main { public static String func(String a, String b) { int[] aa = new int[a.length()]; int[] bb = new int[b.length()]; for (int i = 0; i < a.length(); i++) { aa[i] = Integer.valueOf(String.valueOf(a.charAt(i))); } for (int i = 0; i < b.length(); i++) { bb[i] = Integer.valueOf(String.valueOf(b.charAt(i))); } int index = b.length(); for (int i = a.length() - 1; i >= 0; i--) { if (index >= 1) { if (aa[i] >= bb[index - 1]) { aa[i] = aa[i] - bb[index - 1]; } else { int temp = 1; while (aa[i - temp] == 0) { aa[i - temp] = 9; temp++; } aa[i - temp]--; aa[i] = aa[i] + 10 - bb[index - 1]; } index--; } } int start = a.length()-1; for (int i = 0; i < a.length(); i++) { if (aa[i] != 0) { start = i; break; } } String result = ""; for (int i = start; i < a.length(); i++) { result += aa[i]; } return result; } public static void main(String[] args) { String a = ""; String b = ""; Scanner cin = new Scanner(System.in); while (cin.hasNext()) { if (a == "") { a = cin.nextLine(); } else { b = cin.nextLine(); System.out.println(func(a, b)); a = ""; b = ""; } } } }
相关文章推荐
- 2016华为机试题(java版):两个大数相减的程序(运行成功)
- 2012届华为校园招聘机试题(java实现)
- 2016华为机试题:大数相减
- 2015届华为校园招聘机试题 (java实现)
- 2015届华为校园招聘机试题 java实现
- 华为校园招聘上机试题Java实现(一)
- 华为机试题2014 字符串过滤程序 java实现
- 华为校招上机笔试试题(B卷)——java实现
- 华为校园招聘上机试题Java实现(二)
- 2013华为校园招聘java实现(大家水个回复啊)
- 华为2013机试题Java解(重复字符串的处理操作)
- 华为校招上机笔试试题(A卷)——java实现
- 华为校园招聘上机试题 Java实现(一)
- 华为校园招聘上机试题 Java实现(二)
- 2014届华为校园招聘机试题(java实现)
- (java)华为机试题:大数求差
- 2015届华为校园招聘机试题 java实现(2)
- 2015届华为校园招聘机试题 (3)java实现
- 华为机试题—大数相减-c++
- 2013华为校园招聘机试题1