2010-08-12 4 views
9

Во время просмотра регби прошлой ночью мне было интересно, невозможно ли оценить какие-либо баллы, так как вы можете набирать очки только по 3, 5 или 7. Не прошло много времени, чтобы выяснить, что любое число более 4 достижимо. 5 = 5, 6 = 3 + 3, 7 = 7, 8 = 3 + 5, 9 = 3 + 3 + 3, 10 = 5 + 5 и т. Д.Сумма чисел, сделанных в последовательности

Расширение на этой идее на 5, 7 и 9 дает следующие возможные результаты:

5,7,9,10,12,14 // and now all numbers are possible. 

для 7, 9 и 11:

7,9,11,14,16,18,20,22,23,25,27 // all possible from here 

Я сделал это в моей голове, может кто-нибудь предложите хороший алгоритм, который будет определять наименьший возможный балл, выше которого все баллы достижимы с учетом набора баллов.

Я смоделировал это так:

forall a < 10: 
    forall b < 10: 
     forall c < 10: 
      list.add(3a + 5b + 7c); 
list.sort_smallest_first(); 

Затем проверьте список для последовательности более чем на 3 (наименьший балл возможно). Кажется довольно непрактичным и медленным для чего-либо, кроме тривиального случая.

+1

+1 для просмотра регби, если бы я мог бы дать вам другое, если вы поклонник крестоносцев. Хороший вопрос, хотя - до того, как они увеличили очки за попытку, было невозможно забить 19. – slugster

+0

Кентербери полностью! – Daniel

ответ

8

Существует только одно недостижимое число, выше которого все баллы достижимы.

Это называется числом фробениуса. См: http://en.wikipedia.org/wiki/Frobenius_number

вики-страницы должны иметь ссылки на алгоритмы ее решения, например: http://www.combinatorics.org/Volume_12/PDF/v12i1r27.pdf

Для 2 чисел а, Ь точная формула (аб-аб) известно (которые вы можете использовать, чтобы сократить вниз по вашему поисковому пространству), а для 3 чисел a, b, ca острая нижняя граница (sqrt (3abc) -abc) и довольно быстрые алгоритмы известны.

Если числа находятся в арифметической прогрессии, то известна точная формула (см. Wiki). Я упоминаю об этом, потому что в ваших примерах все числа находятся в арифметической прогрессии.

Чтобы ответить на ваш вопрос, найдите номер Фробениуса и добавьте 1 к нему.

Надеюсь, что это поможет.

+0

+1, а в статье в википедии также используется регби. – Seth

+0

Отличное спасибо. Очень впечатлен тем, что статья wiki использует этот точный пример. – Daniel

+0

В этом вопросе есть код-гольф. http://stackoverflow.com/questions/3465392/code-golf-frobenius-number. Это было очень странно, и эта страница была единственной, которую я открывал одновременно, и оба они упомянули то, о чем я никогда не слышал. Какое совпадение. – bennybdbc

Смежные вопросы