微软编程在线一小时:
题目1 : Arithmetic Expression
时间限制:
2000ms
单点时限:
200ms
内存限制:
256MB
-
4 901 / 100 3 * 3 2 + 6 8 - -1
样例输出
-
2
//source here #include<iostream> using namespace std; int main(int argc,char **argv) { int num; char op; long double result=1.79769e+308,tmp; int index = 1; int num1,num2; cin>>num; for(int i=0;i<num;i++) { cin>>num1>>op>>num2; switch(op) { case '+': tmp = abs(num1+num2 - 9); break; case '-': tmp = abs(num1-num2 - 9); break; case '*': tmp = abs(num1*num2 - 9); break; case '/': tmp = abs(num1/(double)num2 - 9); break; default: break; } if (tmp == 0.0) { index = i+1; break; } if(tmp < result ) { index = i+1; } } printf("%d",index); }
描述
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.