Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Работа с числами в с++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевести с С на С++ http://www.cyberforum.ru/cpp-beginners/thread223646.html
#include <iostream> void inversion(double **A, int N) { double temp; double **E = new double *; for (int i = 0; i < N; i++) E = new double ;
C++ ошибка при кодировании Вопрос такой ,программа должна переводить текст в код хэмминга и обратно. Указываю два файла (txt формата), откуда беру текст и куда ложить результат. например при кодировании слова "isakz" в другом... http://www.cyberforum.ru/cpp-beginners/thread223639.html
Подсчет количества предложений в текстовом файле C++
Сама задача:Подсчитать число предложений в заданном текстовом файле (текст на английском языке). Предложением считается последовательность символов, начинающихся с пробела и прописной буквы и...
C++ Ввод - вывод строк + пробелы
Ввести строку. Вывести в виде нескольких строк так, чтобы в каждой строке было по 4 слова, первое слово начиналось в 5-ой позиции, а последнее заканчивалось в 60-ой. Т.е. Перед первым выведенным...
C++ Быстрая сортировка http://www.cyberforum.ru/cpp-beginners/thread223621.html
Помоги мне ответить на вопросы,большая просьба,заранее спасибо Быстрая сортировка #include <iostream> using namespace std; int array; void Sort(int col)
C++ Бинарный поиск помоги мне плиз ответить на вопросы Бинарный поиск #include <iostream> using namespace std; int BinSearch(int *M, int n, int k); int main() подробнее

Показать сообщение отдельно
Гамбит
14 / 14 / 1
Регистрация: 19.10.2009
Сообщений: 93
04.01.2011, 00:02
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Это из олимпиадных задачек.
Тут в принципе не очень сложно. Нужно помнить что число всех перестановок из из N различных цифр равно N!
А теперь сам алгоритм. Например дано число:
4679831
Подсчет начинаем так с первой цифры (в данном случае это 4):
1. Больше четверки цифры: 6, 7, 9, 8. Если первой стоит 6-ка, то кол-во перестановок для этого варианта (N-1)! . То же самое кол-во перестановок для варианта когда стоит первой 7, 9, 8. Всего (N-1!)*4
2. Теперь считаем что на первом месте стоит 4-ка (4-ку вообще выкидываем из дальнейшего алгоритма). Больше второй цифры (6-ки) только 7, 9, 8. Когда второй стоит 7-ка, то кол-во перестановок (N-2)! . То же самое кол-во перестановок для варианта когда стоит второй 9, 8. Добавляем к имеющемуся кол-ву (N-2!)*3.
и т.д.
В общем для числа 4679831 ответ будет:
(6!)*4+(5!)*3+(4!)*2
хм..ну да, это быстрее чем мой метод=)
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru