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

Messages
1,701
Reaction score
288
Website
tehadm.ru
На вход подается целое число. Необходимо возвести в квадрат каждую цифру числа и вывести получившееся число.
Например, у нас есть число 9119. Первая цифра - 9. 9 в квадрате - 81. Дальше 1. Единица в квадрате - 1. В итоге получаем 811181

Sample Input:
9119

Sample Output:
811181
 
C-like:
package main

import (
    "fmt"
)

func main() {
    var st, result string
    fmt.Scan(&st)

    for _, c := range st {
        num := int(c - '0')
        result += fmt.Sprintf("%d", num*num)
    }

    fmt.Println(result)
}

Пояснение кода:
  • package main: указывает, что это основная программа.
  • import "fmt": импортирует пакет fmt, который предоставляет функции для форматирования и ввода/вывода.
  • func main(): определяет основную функцию программы.
Ввод и обработка строки:
  • var st string: объявляет переменную st типа string для хранения вводимой строки.
  • fmt.Scan(&st): считывает строку из стандартного ввода и сохраняет ее в переменной st.
Формирование результата:
  • result := "": объявляет переменную result типа string для хранения результата.
  • for _, c := range st: перебирает все символы c в строке st.
    • num := int(c - '0'): преобразует символ c в число num.
    • result += fmt.Sprintf("%d", num*num): преобразует num*num в строку и добавляет ее к result.
Вывод результата:
  • fmt.Println(result): печатает строку result, которая содержит квадраты всех цифр исходной строки st.
 
Last edited:
C-like:
package main

import (
    "fmt"
)

func main() {
    var num int
    fmt.Scan(&num)
    result := make([]int, 0, 100)
    for num != 0 {
        result = append(result, (num%10)*(num%10))
        num /= 10
    }

    for i := len(result) - 1; i >= 0; i-- {
        fmt.Printf("%d", result[i])
    }
}
 
C-like:
package main
import "fmt"
func main () {
    var a string
    fmt.Scan(&a)
    for _, d := range a {
        fmt.Print((d-48)*(d-48))}
}
Решение через эксплоит номера кода каждой отдельной цифры.
В таблице символов ASCII 0 это 48, 1 - 49, 2 - 50 итд.
То есть вычитая 48, мы получаем саму цифру и уже с ней работаем.
 
C-like:
package main

import "fmt"

func main() {
    var input string
    fmt.Scan(&input)

    for _, character := range input {
        fmt.Print((character - '0') * (character - '0'))
    }
}
Трюк символ - '0' используется в программировании для преобразования символа цифры в его числовой эквивалент.

В таблице ASCII, которая является стандартом кодирования символов, каждому символу соответствует числовой код.
Например, символ '0' имеет код 48, '1' - 49 и так далее до '9', который имеет код 57.

Когда мы вычитаем '0' из любого символа цифры, мы фактически получаем его числовое значение, так как '0' является начальной точкой для цифр в ASCII.

Например:
C-like:
c = '3'
num := int(c - '0')  // num = 3
Строка num := int(c - '0') преобразует символ c в число типа int.

В языке Go символы представлены в виде чисел типа rune, которые являются целыми числами Unicode. Число '0' представляет код символа "0" в таблице Unicode.

Вычитая '0' из символа c, мы получаем числовое значение соответствующей цифры.

image.png
 
Last edited:
Back
Top