Задать вопрос
  • На чём написан язык программирования C?

    wataru
    @wataru
    LaserTower, задайте этот вопрос на freelance.habr.com, если уж платить собираетесь.

    А так похоже на динамическое программирвание F(n, k, m) - минимальная стоимость взять k комнат из первых n типов так, что они вмещают m человек.

    Ответ минимум по n=N - сколько всего различных типов комнат, k = K - сколько комнат надо взять, m >= M - сколько человек надо расселить.

    При пересчете надо перебрать, сколько комнат последнего типа вы берете.
  • Как посчитать количество разных букв в массиве строк?

    wataru
    @wataru
    Виталий Аргонов, нет. Попробуйте сами. Можете, для начала, написать цикл, который проходится по строке и выводит каждый символ?

    Теперь измените его, что бы считать, только буквы 'a'.

    Теперь напишите второй цикл внутри, и считайте, сколько одинаковых символов левее каждого.
  • Как исправить алгоритм бинарного поиска правой границы?

    wataru
    @wataru Куратор тега Алгоритмы
    LuVairo,

    Во-первых, у вас цикл неверный. надо left < right-2. Вы внимательно прочитали мой ответ?
    Во-вторых, в конце проверяйте, а что там за элемент в left+1. Если он меньше prefix или начинается с него, то надо выдавать phrases.Count.
  • Вопрос по двумерным массивам?

    wataru
    @wataru
    Что за язык-то? Поставьте тег языка.

    Пока похоже, что это номер измерения, длину которого надо брать 0 - строки, 1 - столбцы. Был бы массив трехмерный, еще можно было бы 2 передать.
  • Как исправить алгоритм бинарного поиска правой границы?

    wataru
    @wataru Куратор тега Алгоритмы
    В чем физический смысл left и right? Какой инвариант вы поддерживаете?
  • Как переименовать файлы в папке удалив дату из середины имени?

    wataru
    @wataru Куратор тега Алгоритмы
    Можно больше примеров? Что там может после даты вообще стоять? Всегда ли есть скобочки после? Могут ли а скобках быть другие скобки? Может ли там быть еще дата?
  • Почему C++ код работает неправильно?

    wataru
    @wataru Куратор тега C++
    Fompi,
    int x, y, k, S = 0;
    Создает переменные x, y, k и s. Только последняя инициализируется 0. Если выхотите их все инициализировать, то писать надо:
    int x = 0, y = 0, k = 0, S = 0;

    Обычно, правда, в одну строку так не пишут, ибо читать сложно. Если переменные инициализируются, то лучше каждую объявлять на отдельной строке.

    Про второе - У вас код по логике в массив записывает 2 восьмерки на местро троек. Но вместо этого он сравнивает значения из массива с 8 вне условия в if.
    a = 10; - присваивает переменной a значение 10.
    a == 10; - не делает фактически ничего. Производится сравнение и результат игнорируется.
  • Как в Си вывести в консоль без записи в буфер?

    wataru
    @wataru
    Rsa97, да, но указанная в вопросе команда отработает, как автор хочет.
  • Какими функциями заменить array_diff() в Си?

    wataru
    @wataru
    mayton2019, Похоже тут все просто. В вопросе:
    удалить все значения из списка a, которые есть в списке b
    . Если элемент встречается в b, неважно сколько раз, все его вхождения в a надо удалить. Оставить только те, что не всречаются в b. array_diff, упомянутый в вопросе, работает точно так же.

    Альтернативное понимание, что надо удалить из a элементы столько раз, сколько они встречаются в b, слишком заумно, сложно формализуемо, имеет мало практического смысла, и при этом его гораздо сложнее натянуть на условие в вопросе.
  • Возможно ли полностью покрыть поле паркетом без пересечений?

    wataru
    @wataru Куратор тега Математика
    Alexandroppolus, Да, вы правы, этот алгоритм Хопкрофта-Карпа будет быстрее алгоритма Куна для этой задачи.
  • Возможно ли полностью покрыть поле паркетом без пересечений?

    wataru
    @wataru Куратор тега Математика
    Alexandroppolus, Это даст ускорение в случаях, если какая-то компонента несбалансирована по количеству черных и белых клеток, да.
    Но в худшем случае поиск паросочетания по каждой компоненте отдельно нисколько не быстрее поиска на всем графе сразу же.
  • Как принимать ввод с потока до символа новой строки?

    wataru
    @wataru Куратор тега C++
    gleendo,
    1) Скармливать программе файл через перенаправление ввода
    2) Читать строку через getline, потом читать из строки через sstream
    3) После чтения числа читать символ и проверять, что это пробел - тогда ждать еще одно число. Но это ломается, если оставить после последнего числа пробел.
    4) Через peek пропускать все пробелы во вводе. Если следующий символ окажется eof или eol, то завершаться.
  • Что надо изменить в коде чтобы найти количество максимальных элементов массива?

    wataru
    @wataru Куратор тега C++
    Adamos, Да, разумеется, все можно объединить в один цикл, если немного подумать. Но если у человека возникают проблемы в этой задаче, то это будет слишком сложный шаг.
  • Почему при создании динамической строки игнорируется нулевой индекс?

    wataru
    @wataru
    coborn, Но в файле же после 1 ничего нет. Он читает строку не считывает нифига и потом выводит ничего.
    Во втором случае после 2 идет только одна строка. Ее, первой же, читает. Но потом в файле ничего нет.
  • Как конструктор std::ofstream преобразует std::string в char const * filename?

    wataru
    @wataru Куратор тега C++
    Qubc, На cplusplus же написано:
    typedef basic_ofstream<char> ofstream;
  • Как расширить вычисление до 2^120?

    wataru
    @wataru Куратор тега Математика
    я поместил Вашу формулу i = beta * input % N в


    Не поместили:
    while i < 100:

    Вот:
    i = beta * input % N
    result = divnum(input*beta %N, i)

    Очевидно, что тут result будет 1? Потому что это divnum(x,x) - деление себя на себя.

    Понятно, что divnum(input*beta %N, i) это то же самое, что ваше:
    d= (divnum(input,delta)) 
    s = divnum(i,gamma) %N
    result = divnum(d,s)

    где delta = divnum(1,beta), gamma = 1?
  • Как расширить вычисление до 2^120?

    wataru
    @wataru Куратор тега Математика
    haqz, Вы когда цитируете мои ответы, окружайте циату в тег blackquote (кнопка с кавычками в редакторе).
  • Как расширить вычисление до 2^120?

    wataru
    @wataru Куратор тега Математика
    haqz,

    beta = 0x42
    i = beta * input % N
    result = 1


    Ну так высчитайте result = divnum(input*beta %n, i). Получите 1, как и хотите. И не надо в цикле i перебирать вообще.
  • Как расширить вычисление до 2^120?

    wataru
    @wataru Куратор тега Математика
    haqz,

    result = 1 а i меньше инпут. Поэтому я могу найти инпут за количество операций = i а не инпуту.


    Вот для этого конкретного Input у вас оказалось итераций меньше.
    А для какого-то другого инпута понадобится больше итераций чем он сам.

    Мои формулы сделаны так, что бы потом можно было инпут востановить кргда находится result = 1


    Нет. ваши формулы вычисляют result через i и input. Как вы input вычисляете по ним - вообще непонятно. Переформулируйте задачу. Третий раз повторяю. Что дано? Что надо сделать?

    У вас там гомоморфное шифрование, что ли, что input дан защифрованный, но вы можете производить над ним арифметические операции и сравнивать с единицей?
  • Как расширить вычисление до 2^120?

    wataru
    @wataru Куратор тега Математика
    haqz,
    z = 0x5f87 * 0x42 % N = 0x18a0ce а не 1!

    0x5f87 - это input? А почему вы i на input умножаете, если формула в ответе, да и в вашем коде другая?

    я как понял это решение дает всегда i > input ?!


    Нет. Ведь умножение по модулю. Иногда оно дает i < input. Но всегда найдутся такие input, что i >= input.

    input в задаче неизвестное ! А вы его используете как известную величину. Input и надо найти !!!


    Но вы сами в своем коде input используете! Что значит, оно неизвестное, его надо найти, но result, вычисленный через него должен быть 1? А еще у вас в вопросе нигде не сказано, что вам надо i маленькое, что вы так какие-то вычисления ускоряете.

    вы постоянно хотите чето рвзузнать


    Я пытаюсь понять задачу. Поскольку вы не в состоянии свою задачу сформулировать, да и она бредовая и бессмысленая, единственная надежда понять, что же вам надо - это увидеть изначальную задачу (которая, очевидно, пришла к вам из внешнего мира, а не родилась у вас в голове. Это-то вы воспроизвести, надеюсь, можете).

    Повторю свой вывод. i задается через gamma/delta/input однозначно (если result нужен 1) простой формулой. Но эта формула дает большие i для каких-то входных данных, как бы вы константы не меняли.
    Таким способом вам ваши вычисления не ускорить.