Submit | All submissions | Best solutions | Back to list |
ARITH2 - Simple Arithmetics II |
While browsing aimlessly, Peter stumbled upon an old riddle he used to solve on his calculator when he was still young. It was the kind of a riddle where you punch in a bunch of numbers and operators into a simple pocket calculator and then turn it upside down to get the answer:
These come in many different sizes but they are always exactly one foot long. Answer: 103 * 103 * 5.
What are made of ice to keep people warm? Answer: 50 * 40 * 250 + 791.
After a few minutes he found a large amount of such riddles and full of excitement he went to solve them. He turned his computer screen upside down...
... only to find out that he does not have a reasonable calculator program installed on his computer.
Problem specification
You are given multiple sequences of button presses of a simple pocket calculator that consist of digits and arithmetic operators. For each such sequence find the number it would produce on a pocket calculator's display.
Note that the pocket calculator evaluates the operators in the order in which they are given. (i.e., there is no operator precedence.) Assume that the display of the calculator is large enough to show the result, and that its memory is sufficient to store all intermediate results.
Input specification
The first line of the input file contains an integer T specifying the number of test cases. Each test case is preceded by a blank line.
Each test case represents one sequence of button presses for a pocket calculator. The sequence consists of non-negative integers and arithmetic operators and ends with an equal sign. It may also contain spaces to improve readability.
The operator / represents integer division, rounded down. You may assume that no test case contains division by zero and that in all test cases all intermediate results are non-negative.
Tip: long long int in C/C++, long in Java or int64 in Pascal is enough for this problem.
Output specification
For each sequence from the input file output the number that would be displayed on the calculator.
Example
Input: 4 1 + 1 * 2 = 29 / 5 = 103 * 103 * 5 = 50 * 40 * 250 + 791 = Output: 4 5 53045 500791
Hint
The first test case shows that there is no operator precedence.
The second one shows that integer division always rounds down.
The last two outputs are the answers to the two riddles in the problem statement: "shoes" (53045 upside down), and "igloos"(500791 upside down).
Added by: | Fudan University Problem Setters |
Date: | 2009-05-31 |
Time limit: | 2s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | All except: C99 ERL JS-RHINO NODEJS PERL6 |
Resource: | IPSC 2009 |
hide comments
|
||||||||||||||
2017-01-13 10:04:00
why use stack, dont make it complex, think simple, its complete ad- hoc. AC in a go :) |
||||||||||||||
2016-12-30 19:51:26
Use Stack like we use in evaluation of postfix expressions. Last edit: 2017-01-04 09:19:44 |
||||||||||||||
2016-12-09 06:11:31
what should the answer of 26 / 5 = ?????? |
||||||||||||||
2016-10-31 16:01:33
Used three variables, long long and a char, nice input problem. Iostream made it easy. AC in .03 secs |
||||||||||||||
2016-10-27 12:16:50
Don't use strings and then u need not care about whitespaces or newlines.The calculation starts from Left -> Right Hope it helps :) |
||||||||||||||
2016-10-22 14:58:01
There might be new lines WITHIN each test case like: 2 * 4 + 3 = This is very bad and should be specified in the problem statement. I'm sure it wasted a lot of time for people when they got WA and they thought something was wrong with their logic or implementation. |
||||||||||||||
2016-08-15 00:16:08
@forhad__sidhu I got AC assuming each expression is contained on a single line. So to others, deal with whitespace but don't worry about newlines within expressions. |
||||||||||||||
2016-08-13 10:03:54 sharif ullah
for solving this problem ------------ * every test case begin with empty line * may have some space in the input or not such as:- 12 + 3 -1= output: 14; or 12+3-1= output:14 * there may be a new line in input such as 12+ 3 - 1 = output:14; * division is integer division; * got AC in both using long long or long long int Last edit: 2016-08-13 10:05:14 |
||||||||||||||
2016-08-09 16:18:26
Tried ios:sync to reduce time from 0.04 -_- ended up getting a TLE -_- Any ideas on how to optimize further? |
||||||||||||||
2016-07-13 07:59:14
yeah no use of strings Last edit: 2016-07-13 07:59:32 |