Вывести на экран чётные положительные степени числа 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. Таким образом, код будет выполнять следующие действия:
- Начать выполнение цикла.
- Пока n не чётное, выполнять следующие действия: a. Уменьшить n на 2.
- После каждой итерации цикла проверять, является ли n чётным. Если да, то выполнение цикла прекращается и происходит переход к следующему шагу.
- Вывести на экран чётные положительные степени числа 2, не большие, чем 2^n. Важно отметить, что в данном коде нет вывода на экран внутри цикла, поэтому он будет выполняться бесконечно, пока не будет остановлен пользователем или не закончится выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д