ACM Arithmetic Expression

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;
}
原文地址:https://www.cnblogs.com/xiongqiangcs/p/3647495.html