Given N arithmetic expressions, can you tell whose result is closest to 9?
Line 1: N (1 <= N <= 50000).
Line 2..N+1: Each line contains an expression in the format of "a op b" where a, b are integers (-10000 <= a, b <= 10000) and op is one of addition (+), subtraction (-), multiplication (*) and division (/). There is no "divided by zero" expression.
The index of expression whose result is closest to 9. If there are more than one such expressions, output the smallest index.
4 901 / 100 3 * 3 2 + 6 8 - -1
2
import java.util.Scanner; public class Main { static int InversionCount ; public static void main(String[] args) { int T,t; Scanner jin = new Scanner(System.in); T = jin.nextInt(); jin.nextLine(); int ret = T+1; double max_abs = Double.MAX_VALUE; for (t = 1; t <= T; t++) { String line = jin.nextLine(); String[] argStrings = line.split(" "); //System.out.println(argStrings.length); double a = Double.parseDouble(argStrings[0]); double b = Double.parseDouble(argStrings[2]); double op_ret ; if (argStrings[1].equals("+")) { op_ret = a + b; } else if (argStrings[1].equals("-")) { op_ret = a - b; } else if (argStrings[1].equals("*")) { op_ret = a * b; } else op_ret = a / b; if (Math.abs(op_ret - 9) < max_abs) { max_abs = Math.abs(op_ret - 9); ret = t; } } System.out.println(ret); } }
【微软编程一小时】题目1 : Arithmetic Expression
原文地址:http://blog.csdn.net/xiaozhuaixifu/article/details/24662505