Skip to content

spbsu-student-projects/permanent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

permanent

Что это?

permanent - это программа для расчёта перманента матрицы с помощью формулы Райзера со сложностью O(2^n*n^2). Однако элементами матрицы могут быть не только обычные числа, но и многочлены от произвольного числа переменных.

Что мы понимаем под многочленом

Под многочленом мы понимаем арифметическое выражение, записанное с использованием знаков +, -, * и ^ с операторами-многочленами от переменных и скобок (второй член в операторе ^ должен быть целым положительным числом, при этом первый не должен быть числом), не содержащее пробелов. Переменной считается любая последовательность символов, не содержащая знаков арифметических выражений и содержащая хотя бы один символ, отличный от 0...9 и точки. Всякая переменная, как и всякое число, считается многочленом. Знак умножения не может быть опущен: так, 1.5x - неверная конструкция, программа воспримет это как единую переменную. Правильно: 1.5*x.

Как это использовать?

Программа читает из стандартного входного потока, и выдаёт результат в стандартный выходной поток. Во входной поток необходимо сначала передать число n - размер матрицы, у которой считается перманент (при n > 14 программа работает слишком долго). Далее должны следовать n строк, содержащие n многочленов, разделённых пробелами. Вывод состоит из одного многочлена - перманента введённой матрицы. Например:

\\stdin
3
(semen+svyat)^2 x 1
(semen-svyat)^2 0 1
1*ivan_kazmenko 1 0
\\stdout
2*svyat^2+2*semen^2+x*ivan_kazmenko

И зачем это вообще нужно?

Я не знаю :)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published