Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Проверка партий на складе

(Время: 0,25 сек. Память: 32 Мб Сложность: 81%)

На складе компании проводят быструю проверку качества упаковки. Каждая партия товара описывается набором меток, и каждая метка соответствует одному из заранее утверждённых типов компонентов (их не больше 50). Для удобства учёта партия кодируется натуральным числом: в разложении этого числа на простые множители используются только простые из утверждённого набора. При этом степень простого множителя отражает, сколько раз соответствующий компонент «участвовал» при формировании партии. Инженер по контролю качества считает, что выбранная группа партий «идеально сбалансирована», если при перемножении кодов этих партий получается число, у которого для каждого компонента суммарное число участий – чётное. То есть итоговый продукт «симметричен по компонентам».

Вам нужно автоматизировать проверку. Для каждого тестового случая дано N натуральных чисел a1 … an, каждое из которых раскладывается только по простым множителям из фиксированного набора (размер набора ≤ 50). Найдите, сколькими различными способами можно выбрать непустое подмножество данных чисел так, чтобы произведение выбранных чисел было полностью «сбалансированным», то есть все степени простых множителей в произведении были чётными. Так как ответ может быть большим, выведите его по модулю 109 + 7.

Входные данные

Входной файл INPUT.TXT содержит в первой строке натуральное число Q – количество тестовых случаев. В каждом наборе содержится одно натуральное число N, далее N чисел ai через пробел. (1 ≤ Q ≤ 100; 1 ≤ N ≤ 104; 1 ≤ ai ≤ 106).

Выходные данные

В выходной файл OUTPUT.TXT выведите Q чисел по одному в каждой строке.

Пример

INPUT.TXTOUTPUT.TXT
13
4
24 6 8 2
3
3 9 27
2
2 6
3
3
0

Автор задачи

Владимир Игоревич Лукьянчиков

Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!

[Обсуждение] [Все попытки] [Лучшие попытки]


 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 ЕГЭ по информатике
 Авторские задачи
 Тренировочные олимпиады
 Фёдор Меньшиков. Олимпиадные задачи по программированию, 2006
 Сборник задач В.И. Лукьянчикова
 Булева Алгебра
 Геометрия
 Динамическое программирование
 Комбинаторика
 Разбор строк
 Разное
 Разное 2
 Рекурсия, перебор
 Системы счисления
 Сортировка и последовательности
 Теория графов
 Формула
 Целочисленная арифметика
 Целочисленная арифметика 2
 Структуры данных
 Бинарный поиск
 Занимательная математика
 Занимательная математика 2
 Занимательная математика 3
 A. Гипотеза Гримма
 B. Неужели таблица умножения?
 C. Проверка партий на складе
 D. Занимательная последовательность 5

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru