QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 512 MB Total points: 100

#3325. 方法论乘法

Statistics

在经历了一次又一次的电脑崩溃后,Alonso 对所有这些劣质的软件和糟糕的代码感到厌倦!他决定,为了改善这种情况,现代编程这栋“玻璃屋”需要被彻底拆除,并仅使用完全形式化的公理推理从零开始重建。作为第一步,他决定使用皮亚诺公理(Peano axioms)来实现自然数的算术运算。

皮亚诺公理(以意大利数学家朱塞佩·皮亚诺命名)是对自然数算术性质的公理化形式。我们有两个符号:常数 $0$ 和一元后继函数 $S$。自然数从 $0$ 开始,依次为 $0, S(0), S(S(0)), S(S(S(0)))$,以此类推。利用这两个符号,加法和乘法的运算通过以下公理归纳定义:对于任意自然数 $x$ 和 $y$,我们有:

$$x + 0 = x$$ $$x + S(y) = S(x + y)$$ $$x \cdot 0 = 0$$ $$x \cdot S(y) = x \cdot y + x$$

左侧的两个公理定义了加法,右侧的两个公理定义了乘法。

例如,给定 $x = S(S(0))$ 和 $y = S(0)$,我们可以重复应用这些公理进行推导:

$$x \cdot y = S(S(0)) \cdot S(0) = S(S(0)) \cdot 0 + S(S(0))$$ $$= 0 + S(S(0)) = S(0 + S(0)) = S(S(0 + 0)) = S(S(0))$$

编写一个程序,给定两个用皮亚诺算术定义的自然数 $x$ 和 $y$,计算它们的乘积 $x \cdot y$。

输入格式

输入包含两行。每一行包含一个用皮亚诺算术定义的自然数,长度不超过 $1\,000$ 个字符。

输出格式

输出两个输入数字的乘积。

样例

样例输入 1

S(S(0))
S(S(S(0)))

样例输出 1

S(S(S(S(S(S(0))))))

样例输入 2

S(S(S(S(S(0)))))
0

样例输出 2

0

Giuseppe Peano

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.