• Как из убывающей последовательности сделать возрастающую в c++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    1) Проходитесь по массиву, находя убывающие последовательности.

    2) Разворачиваете каждую их них.

    3) ???

    4) PROFIT!

    Вот вам подсказка, как можно выделять в массиве убывающие последовательности.
    start = 0;
    while (start < n) {
      end = start;
      ПОКА (start..end+1 - убывающая последовательность) {
        ++end;
      }
      // start..end - убывающая последовательность.
      start = end+1;
    }


    Развернуть кусок с i по j можно одним циклом while. Меняйте местами 2 крайних элемента и тогда останется развернуть кусок с i+1 по j-1.
    Ответ написан
    Комментировать
  • Как узнать кол-во всех квадратов в числе?

    VlasenkoFedor
    @VlasenkoFedor
    Программист: php, js, go
    Это все нечётные числа из цифр 1,4,9
    Функция называется mutations
    думаю за 5 мин вы найдете массу реализаций
    Ответ написан
    2 комментария
  • Как решить задачу по C++ на алгоритмы?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Видимо, надо вывести все пары n и k, таких что k^2+n^2=n!/(k!(n-k)!), a <= k <= n <= b.
    Ответ написан
    Комментировать
  • Как решить задачу по рекурсивным алгоритмом на python?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Вы, похоже, забыли обнулять счетчик восьмерок (k) для каждого значения f.
    Ответ написан
    Комментировать
  • Как решить задачу по рекурсивным алгоритмом на python?

    milssky
    @milssky
    Координатор племени фиолетовых обезьянок
    С помощью строк вообще без проблем

    def f(n):
        if n <=5:
            return n + 15
        if n % 2 == 0 and n > 5:
            return f(n//2)+n*n*n-1
        if n % 2 != 0 and n>5:
            return f(n-1) + 2*n*n+1
    
    
    if __name__ == '__main__':
        count = 0
        for i in range(1, 1001):
            check = str(f(i))
            if check.count('8') >= 2:
                count += 1
    
        print(count)


    и вариант через остатки

    def f(n):
        if n <=5:
            return n + 15
        if n % 2 == 0 and n > 5:
            return f(n//2)+n*n*n-1
        if n % 2 != 0 and n>5:
            return f(n-1) + 2*n*n+1
    
    
    def calc_eight(n):
        count = 0
        while n:
            rem = n % 10
            if rem == 8:
                count += 1
            n = n // 10
    
        return count
    
    if __name__ == '__main__':
        count = 0
        for i in range(1, 1001):
            check = f(i)
            if calc_eight(check) >= 2:
                count += 1
    
        print(count)


    ошибка ваша в переменно k. Она у вас показывает, сколько цифр 8 в кадом числе от 1 до 1000. И для каждого числа i она должна быть обнулена. У вас этого нет.
    Ответ написан
    Комментировать