Вывести на экран чётные положительные степени числа 2, не большие, чем 2^n - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Не могу понять в чём причина. Кажется простая задачка, а проходит всего лишь 10 тестов из 22. Подскажите, пожалуйста, что я не так написал?
Напишите программу, которая вводит натуральное число N и выводит на экран чётные положительные степени числа 2, не большие, чем 2N, в порядке убывания.

Входные данные

Входная строка содержит одно натуральное число N.

Выходные данные

Программа должна вывести в одну строчку через пробел чётные положительные степени числа 2, не большие, чем 2N, в порядке убывания. Если таких нет, программа должна вывести число 0.

Примеры

Входные данные

Выходные данные

9 256 64 16 4
#include <stdio.h>
 
int main() {
 
    int n;
 
    scanf("%d", &n);
    
    if (n < 3)
        putchar('0');
    else {
        int i, j;
        unsigned long long pow = 2ULL;
        for (i = n - 1; i > 1; --i)
            if (!(i & 1)) {
                for (j = 0; j < i - 1; ++j)
                    pow *= 2ULL;
                printf("%llu ", pow);
                pow = 2ULL;
            }
    }
    
    putchar('\n');
    
    return 0;
}

Решение задачи: «Вывести на экран чётные положительные степени числа 2, не большие, чем 2^n»

textual
Листинг программы
for(;!(n<2);n-=2)

Объяснение кода листинга программы

В данном коде используется цикл for, который выполняется до тех пор, пока условие не станет истинным, то есть пока n < 2 не станет истинным. Внутри цикла присутствует оператор вычисления остатка от деления (!(n<2)). Этот оператор возвращает 1, если n меньше 2, и 0 в противном случае. То есть, цикл будет выполняться до тех пор, пока n не станет чётным. Далее, в теле цикла присутствует операция уменьшения n на 2 (n-=2). Это означает, что после каждой итерации цикла значение n будет уменьшаться на 2. Таким образом, код будет выполнять следующие действия:

  1. Начать выполнение цикла.
  2. Пока n не чётное, выполнять следующие действия: a. Уменьшить n на 2.
  3. После каждой итерации цикла проверять, является ли n чётным. Если да, то выполнение цикла прекращается и происходит переход к следующему шагу.
  4. Вывести на экран чётные положительные степени числа 2, не большие, чем 2^n. Важно отметить, что в данном коде нет вывода на экран внутри цикла, поэтому он будет выполняться бесконечно, пока не будет остановлен пользователем или не закончится выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.364 из 5
Похожие ответы