Я пытаюсь выполнить задание по кодированию на сайте hackerrank.com.
Шашанк — новичок в математике, и он очень взволнован, узнав, что заданный l мощности N имеет (2N - 1) непустой подсписок. Он записывает все непустые подсписки для заданного множества A. Для каждого подсписка он вычисляет sublist_sum, представляющую собой сумму элементов, и обозначает их S1, S2 sub>, S3, ..., S(2N-1).
Затем он определяет special_sum, P.
P = 2S1 + 2S2 + 2S3 .... + 2S(2N-1) и сообщает P % (10^9 + 7) .
OUPUT Вывести special_sum, P по модулю (10^9 + 7).
Я почти уверен, что неправильно понял подсказку, но моя программа предназначена для получения списка чисел. Программа возведет в степень 2 всех комбинаций этого списка (без дубликатов, порядок не имеет значения, всех размеров), затем суммирует их все вместе и напечатает.
Пример с сайта
Список
1, 1, 2
Вывод44
Пояснение
- {1} и 2^1 = 2
- {1} и 2^1 = 2
- {2} и 2^2 = 4
- {1,1} и 2^2 = 4
- {1,2} и 2^3 = 8
- {1,2} и 2^3 = 8
- {1,1,2} и 2^4 = 16
Таким образом, всего будет 44;
Мое понимание простого суммирования показателей степени неверно, потому что ответ намного больше, чем ожидаемый ответ в первом тестовом примере (очевидно).
Ввод
422 412 417 497 284
Вывод 67920854
По сути, я хочу, чтобы кто-то объяснил подсказку. Я думаю, что просто вычисляю частичную сумму, но я не знаю, когда и что я должен mod 10^9 + 7
.
К вашему сведению, я закончил только Алгебру II, поэтому, если я пропустил какое-то математическое понятие, помните о моем опыте, когда будете мне его объяснять. Я программировал на C++, поэтому предпочтительнее использовать примеры кода на этом языке.
Код Моя жалкая попытка решения: http://pastebin.com/c7YxCLMt
2^422
— смехотворно большое число. Вы не можете вычислить его с помощью простых операций. Таким образом, задача состоит в том, чтобы увидеть, сможете ли вы понять, как «реструктурировать математику», чтобы вы могли предоставить простое вычислительное решение. Это не будет вашей проблемой, если кто-то другой решит ее за вас. ;) - person Disillusioned   schedule 15.08.2016