Отображения (map): Напишите программу 1

Сообщения
1 471
Реакции
271
Сайт
tehadm.ru
Внутри функции main (объявлять функцию не нужно) необходимо написать программу:

На стандартный ввод подается 10 целых чисел, разделенных пробелами (числа могут повторяться). Для чтения из стандартного ввода импортирован пакет fmt.

Вам необходимо вычислить результат выполнения функции work для каждого из полученных чисел. Функция work имеет следующий вид:

func work(x int) int

Результаты вычислений , разделенные пробелами, должны быть напечатаны в строку.

Однако работа функции work занимает слишком много времени. Выделенного вам времени выполнения не хватит на последовательную обработку каждого числа, поэтому необходимо реализовать кэширование уже готовых результатов и использовать их в работе.

После завершения работы программы результат выполнения будет дополнен информацией о соблюдении установленного лимита времени выполнения.

Sample Input:
3 1 5 2 3 5 3 0 3 4

Sample Output:
2 0 6 1 2 6 2 -1 2 5 time limit ok
 
C-подобный:
a := map[int]int{}
for i := 0; i <= 9; i++ {
    var c int
    fmt.Scan(&c)
    if vad, ok := a[c]; ok {
        fmt.Print(vad, " ")
    } else {
        a[c] = work(c)
        fmt.Print(a[c], " ")
    }
}
 
C-подобный:
var a int
b := make(map[int]int)
for i := 0; i <= 9; i++ {
    fmt.Scan(&a)
    if v, ok := b[a]; ok {
        fmt.Print(v," ")
    } else {
        b[a] = work(a)
        fmt.Print(b[a], " ")
    }
}
 
C-подобный:
cache := make(map[int]int)

for i := 0; i < 10; i++ {
    var n int
    fmt.Scan(&n)
    if _, ok := cache[n]; !ok {
        cache[n] = work(n)
    }
    fmt.Print(cache[n], " ")       
}
 
Назад
Верх Низ