5x5 网格中的五位数素数
|---|---|---|---|---|
| 1 | 1 | 3 | 5 | 1 |
|---|---|---|---|---|
| 3 | 3 | 2 | 0 | 3 |
|---|---|---|---|---|
| 3 | 0 | 3 | 2 | 3 |
|---|---|---|---|---|
| 1 | 4 | 0 | 3 | 3 |
|---|---|---|---|---|
| 3 | 3 | 3 | 1 | 1 |
|---|---|---|---|---|
(图1)
图 1 显示了一个正方形。每行、每列和两个对角线都可以读作一个五位数的素数。行从左到右读取。列从上到下读取。两个对角线都是从左到右读取的。使用 INPUT.TXT 文件中的数据,编写一个构造此类正方形的程序。
质数必须具有相同的数字总和(示例中为 11)。正方形左上角的数字是预先确定的(示例中为 1)。
一个素数可以在同一个平方中多次使用。
如果有多个解决方案,则必须提供所有解决方案。五位数素数不能以零开头,即00003不是五位数素数。
输入数据
11 1
我试图从IOI'94竞赛 - 问题3 - Primes中做一个问题。
我已经构建了大部分的帮助程序函数...
- 使用Eratosthenes的Sieve生成5位素数(在9999和100000之间)
- 构建了一个函数来计算数字总和 (12345 = 1+2+3+4+5 = 15)
- 构建了一个函数来检查数组,如果数字总和在整个过程中相同
- 构建了一个函数来检查数字是否开始使用指定的数字(startWith(12345,1) 返回 true)
问:问题是我不知道如何填满阵列或使用回溯功能来继续检查:(。任何人都可以帮我吗?我如何填充2D数组,以便它包含来自素数表的值,并且总和在所有角度上都是正确的?
*注意:生成5位素数的Eratosthenes的Sieve of Eratosthenes方法,也作为过滤以X开头的值并且值的总和为M *的能力
完整问题 : http://olympiads.win.tue.nl/ioi/ioi94/contest/day1prb3/problem.html
增加价值的预期顺序,只是不知道如何:(。
1 2 3 4 5
6 13 14 12 15
7 16 11 18 19
8 10 20 22 23
9 17 21 24 25