Т.е. на языке, скажем C++, это будет выглядеть так:
double res = exp((1/n) * log(x));
Блог о математике, программировании, алгоритмах. И немного о работе операционной системы Linux.
double res = exp((1/n) * log(x));
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и запускаем скрипт заново. Он не будет повторять ту работу, что уже сделал.
#include <iostream> #include <vector> #include <cstdlib> #include <ctime> int main(int argc, char** argv) { using namespace std; srand(time(NULL)); vector<vector<int> > matrix; #define size 1000 matrix.resize(size); for (int i = 0; i < size; i++) { matrix[i].resize(size); for (int j = 0; j < size; j++) { matrix[i][j] = 0; } } for (int i = size - 1; i > 0; i--) { /** * (rand() % i) - случайное число в множестве [0, i) * i-тый столбец */ matrix[rand() % i][i] = 1; } for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { if (matrix[i][j] == 1) { cout << i << " -> " << j << ";" << endl; } } } }И на закуску небольшой пример:
0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0Дерево, представленное этой матрицей будет выглядеть так:
flex — генератор лексических анализаторов, bison — синтаксических. Оба эти пакета действуют по одной и той же схеме: они берут описание грамматики (для flex этот файл содержит описание лексем с помощью регулярных выражений, для bison — описание грамматики в формате близком к BNF) и выдают файлы, содержащие C-программу, которая занимается разбором входного текста. Исторически сложилось так, что работают они в связке, а мануалы для них отдельные. Схема синтаксического разбора входного текста выглядит так:
java -jar antlrworks-1.3.1.jar
При установке некоторых пакетов в Ubuntu (8.04) начала возникать ошибка:
install-info: No dir file specified; try --help for more information. dpkg: не удалось обработать параметр <название пакета> (--configure): подпроцесс post-installation script возвратил код ошибки 1 При обработке следующих пакетов произошли ошибки: <название пакета>
Осмотр пре- и постинсталляционных скриптов пакетов, при установке которых возникали ошибки (кэш пакетов находится в папке /var/cache/apt/archives), показал, что ошибка возникает именно на команде install-info.
Некоторые google-мучения подсказали, что нужно проверить версии установленных приложений.
numlock@oligocheta:~$ whereis install-info install-info: /usr/sbin/install-info /usr/local/bin/install-info /usr/share/man/man8/install-info.8.gz numlock@oligocheta:~$ /usr/sbin/install-info --version Debian install-info version 1.14.25. ... numlock@oligocheta:~$ /usr/local/bin/install-info --version install-info (GNU texinfo) 4.13 ...
Я попытался поменять местами значения переменной PATH '/usr/sbin:' и '/usr/local/bin:'. но это не привело к должному эффекту. Поэтому я просто переименовал символическую ссылку install-info в install-info-gnu (в папке /usr/local/bin), чтобы dpkg находил не его, а версию для Debian.
numlock@oligocheta:~$ sudo mv /usr/local/bin/install-info /usr/local/bin/install-info-gnu
Все заработало.
Рецепт взят из Naveen Kumar Molleti's Tech Blog