Description
Given N arithmetic expressions, can you tell whose result is closest to 9?
Input
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.
Output
The index of expression whose result is closest to 9. If there are more than one such expressions, output the smallest index.
Sample Input
4 901 / 100 3 * 3 2 + 6 8 - -1
Sample Output
2
#include <iostream> #include <string> #include <vector> #include <algorithm> #include <cstdio> #include <cmath> #include <iterator> using namespace std; int main(){ int n; cin >> n; vector<double> res(n,0); for(int i = 0 ; i < n; ++ i){ double a,b; char op; cin >> a >> op >> b; switch(op){ case '+': res[i] = fabs(a+b-9); break; case '-': res[i] = fabs(a-b-9); break; case '*': res[i] = fabs(a*b-9); break; case '/': res[i] = fabs(a/b-9); break; default: break; } } cout<<distance(res.begin(), min_element(res.begin(),res.end()))+1<<endl; return 0; }