Решение задач 1: Напишите программу 12

Сообщения
1 471
Реакции
271
Сайт
tehadm.ru
По данному числу N распечатайте все целые значения степени двойки, не превосходящие N, в порядке возрастания.

Входные данные
Вводится натуральное число.

Выходные данные
Выведите ответ на задачу.

Sample Input:
50

Sample Output:
1 2 4 8 16 32
 
C-подобный:
package main

import "fmt"

func main() {
    var num int
    fmt.Scan(&num)

    numTwo := 1
    for numTwo <= num {
        fmt.Print(numTwo, " ")
        numTwo *= 2
    }
}

При выводе значения numTwo до его увеличения в два раза (numTwo *= 2), мы гарантируем, что сначала будет выведено текущее значение numTwo, а затем оно будет увеличено. Это позволяет нам выводить значения степеней двойки в правильном порядке и избегать вывода значения, которое уже превышает заданное число num.

Если бы вы поместили fmt.Print(numTwo, " ") после numTwo *= 2, то сначала numTwo бы увеличилось в два раза, а затем было бы выведено новое значение. В этом случае вы бы получили значения степеней двойки, которые могут превысить заданное число num.

Поэтому важно сначала вывести текущее значение numTwo, а затем увеличить его в два раза для правильного вывода степеней двойки, не превосходящих число num.
 
C-подобный:
package main

import "fmt"

func main() {
    var max int
    fmt.Scan(&max)
    for i := 1; i <= max; i *= 2 {
        fmt.Print(i, " ")
    }
}
 
Назад
Верх Низ