Тема: Задача на строковый алгоритм
Дан массив из N элементов и числа в нём целые от 1 до M (1<=N<=100000,1<=M<=100000). Массив - это типа кубики как они отражаются в зеркале, число M - число их цветов. Все имеющиеся кубики отражаются в зеркале а некоторые из "настоящих" кубиков тоже видны. Требуется найти количество "настоящих" кубиков (все возможные).
Например: дан массив 1 1 2 2 1 1. Может быть 3 кубика (1 1 2 - настоящие, 2 1 1 - отражение), 5 кубиков (1 - настоящий, 1 2 2 1 1 - отражение) и 6 кубиков - все отражены в зеркале.
Я решил эту задачу через хеши (вычисление хэшей всех префиксов и обратных префиксов), но видимо из-за большого M обрезание числа в int64 получается слишком большое и у меня выдаёт неправильный ответ.
Подскажите более подходящий алгоритм!