
double res = exp((1/n) * log(x));
Блог о математике, программировании, алгоритмах. И немного о работе операционной системы Linux.

double res = exp((1/n) * log(x));
— мощность поддерева, с корнем в j-той вершине данного дерева. Нумерация здесь соответсвует обходу в ширину, а корень дерева имеет нулевой индекс. То есть, мы берем все ребра исходящие из корня дерева и делим это множество на два. Ссуммируем мощность подмножеств, которые начинаются с вершин, в которые входят эти ребра, и делим одну сумму на другую.
void
getPartition(unsigned n, unsigned m)
{
if (n < m) {
throw out_of_range("N must be greater then M");
}
unsigned sum = 0;
vector< unsigned > partition;
partition.resize(m);
// заполнение массива случайными значениями
for (unsigned i = 0; i < m; i++) {
partition[i] = rand() % n;
}
partition[partition.size() - 1] = n;
// сортировка
sort(partition.begin(), partition.end());
// вычитаение
for (unsigned i = m - 1; i > 0; i--) {
partition[i] = partition[i] - partition[i - 1];
}
int diff = 0;
// балансировка
do {
for (unsigned i = 0; i < m; i++) {
if (partition[i] < 1) {
partition[i]++;
diff--;
}
if (diff < 0) {
if (partition[i] > 1) {
partition[i]--;
diff++;
}
}
}
} while (diff != 0);
// вывод на экран вместе с суммой всех элементов для проверки
for (unsigned i = m - 1; i > 0; i--) {
cout << partition[i] << " ";
sum += partition[i];
}
sum += partition[0];
cout << partition[0] << " " << sum;
cout << endl;
}
sudo apt-get install xrdpПосле этого, мы уже можем подключаться к нашему серверу, но по-умолчанию используется протокол VNC. С этим видом подключения у меня возникли проблемы переключения раскладок клавиатуры (по умолчанию удаленная сессия видела только одну раскладку en_US). Настроить переключение удалось только с бубном и через IBus, а не через xkb. К тому же подключение более чем 5 машин вешало сеть. Я решил по-пробовать rdp.
svn://server1.xrdp.org/srv/svn/repos/main/x11rdp_xorg71Итак, качаем исходник куда-нибудь, а потом собираем.
cd ~/ mkdir temp cd temp svn co svn://server1.xrdp.org/srv/svn/repos/main/x11rdp_xorg71 cd x11rdp_xorg71 sudo mkdir /opt/x11 sudo ./buildx.sh /opt/x11В последней строчке мы сказали собирающему скрипту, чтобы он положил все собранное в каталог /opt/x11. У меня во время сборки скрипт вывалился с ошибкой и пожаловался, что нет библиотеки zlib. Ставим:
sudo apt-get install zlib1g-devи запускаем скрипт заново. Он не будет повторять ту работу, что уже сделал.