POJ3121 HDU1968 UVA12096 UVALive3634 The SetStack Computer【set+vector+map+模擬】
阿新 • • 發佈:2019-01-03
Background from Wikipedia: "Set theory is a branch of mathematics created principally by the German mathematician Georg Cantor at the end of the 19th century. Initially controversial, set theory has come to play the role of a foundational theory in modern mathematics, in the sense of a theory invoked to justify assumptions made inmathematics concerning the existence of mathematical objects (such as numbers or functions) and their properties. Formal versions of set theory also have a foundational role to play as specifying a theoretical ideal of mathematical rigor in proofs."
Given this importance of sets, being the basis of mathematics, a set of eccentric theorist set off to construct a supercomputer operating on sets instead of numbers. The initial Set-Stack Alpha is under construction, and they need you to simulate it in order to verify the operation of the prototype.
The computer operates on a single stack of sets, which is initially empty. After each operation, the cardinality of the topmost set on the stack is output. The cardinality of a set S is denoted |S| and is the number of elements in S. The instruction set of the SetStack Alpha is PUSH, DUP, UNION, INTERSECT, and ADD.
A = {{}, {{}}}
and that the next one is
B = {{}, {{{}}}}.
For these sets, we have |A| = 2 and |B| = 2. Then:
Given this importance of sets, being the basis of mathematics, a set of eccentric theorist set off to construct a supercomputer operating on sets instead of numbers. The initial Set-Stack Alpha is under construction, and they need you to simulate it in order to verify the operation of the prototype.
The computer operates on a single stack of sets, which is initially empty. After each operation, the cardinality of the topmost set on the stack is output. The cardinality of a set S is denoted |S| and is the number of elements in S. The instruction set of the SetStack Alpha is PUSH, DUP, UNION, INTERSECT, and ADD.
- PUSH will push the empty set {} on the stack.
- DUP will duplicate the topmost set (pop the stack, and then push that set on the stack twice).
- UNION will pop the stack twice and then push the union of the two sets on the stack.
- INTERSECT will pop the stack twice and then push the intersection of the two sets on the stack.
- ADD will pop the stack twice, add the first set to the second one, and then push the resulting set on the stack.
A = {{}, {{}}}
and that the next one is
B = {{}, {{{}}}}.
For these sets, we have |A| = 2 and |B| = 2. Then:
- UNION would result in the set { {}, {{}}, {{{}}} }. The output is 3.
- INTERSECT would result in the set { {} }. The output is 1.
- ADD would result in the set { {}, {{{}}}, {{},{{}}} }. The output is 3.