#P17350. [ECNA 2025] Number Pyramid
[ECNA 2025] Number Pyramid
题目描述
Uneedtoth 公司专门为小学生制作数学游戏,Pam D. Monium 刚刚负责他们的最新产品“数字金字塔”。游戏使用若干张卡片,每张卡片上都有一个由方格组成的金字塔,其中一些方格填有数字,另一些为空,如图 1 最左侧的卡片所示。
游戏目标是给每个空方格填入数值,使除最底行之外的每个方格,都等于它正下方两个方格的数值之和。为了让游戏保持在小学水平,最终所有方格中的数值都是绝对值小于 的整数。
卡片还经过专门设计,可以通过若干趟扫描求解:每一趟从顶行到底行,并在每行中从左到右扫描;只要某个方格的值能够由相邻方格确定,就把它填上。图 1 的其余三张卡片展示了这一过程。给定卡片可能还有其他求解方式,但如果无法通过这种方法确定唯一解,就不应把该卡片发给学生。Pam 称这种卡片为“有歧义的”。
起初一切似乎都很顺利,Uneedtoth 工厂的机器不断产出卡片。但在产品测试中,Pam 发现机器出现故障:有些卡片有歧义,另一些会对一个或多个方格推导出相互矛盾的值。
例如,如果图 1 最左侧卡片缺少左下角的 ,该卡片就有多组解,因而有歧义;如果把该卡片最后一行最右侧填成 ,或把倒数第二行最右侧填成 ,都会产生矛盾,使卡片无解。最后,如果把 改成 ,也会无解,因为求出的某个值会落在允许范围 之外。
Pam 现在有两条路可选:其一是无视测试结果,直接发售卡片,并指望美国孩子糟糕的数学水平能为她争取到找到下一份工作的时间;其二是请人编写软件,检测并剔除有问题的卡片。经过一番内心挣扎,又看了一眼银行账户后,她选择了后者,并来请你帮忙。
:::align{center}
:::
输入格式
第一行包含一个整数 (),表示数字金字塔卡片的行数。
接下来的 行描述金字塔各行:第一行包含一个值,第二行包含两个值,依此类推。所有值 均满足 ,其中特殊值 表示空方格。
输出格式
输出以下三种结果之一:
- 如果卡片存在多组所有值均在 范围内的解,输出
ambiguous; - 如果卡片无解,或者其解中至少有一个值落在 之外,输出
no solution; - 否则输出
solvable,随后按样例输出所示格式输出完整解。
6
15
18 100
100 100 -6
100 100 -3 100
100 100 100 -5 100
6 100 100 100 100 100
solvable
15
18 -3
15 3 -6
9 6 -3 -3
5 4 2 -5 2
6 -1 5 -3 -2 4
2
100
10 100
ambiguous
2
10
10 10
no solution
2
100
51 51
no solution