spoj


Tutorial

TEST - Life, the Universe, and Everything

Остановить ввод после ввода числа 42

Вход: Целые числа, каждое начинается с новой строки

Выход: Все числа до числа 42

Решение

my @result;
while (<>){
    $_ == 42 ? last : push @result, $_;
}

print "$_" for @result;

$ perl divsum.pl
321
421
421
42
321
421
421
    

DIVSUM - todo

Сумма делителей числа. Пример 20 имеет 5 чисел на которые делиться число нацело, их сумма - 1 + 2 + 4 + 5 + 10 = 22

Вход: Целые числа, каждое начинается с новой строки

Выход: Сумма делителей для каждого входного числа

Алгоритм

1. В цикле пока пользователь не введет ctrl+d
    A. Получить число n
    B. Установить sum = 0
    С. В цикле от 1-го до n
        i. Если n делиться на i без остатка, сложить i с sum
    D. Добавить sum в массив result
2. Вывести result

STRHH - Half of the half

Вход: Первый параметр - число строк t (1<=t<=100) Остальные - строки каждый с новой строки

Выход: Для каждого веденного слова, вывести буквы которые стоят на четных позициях до середины слова. Первый символ должен всегда быть

Пример:


Input:
4
your
progress
is
noticeable

Output:
y
po
i
ntc

Алгоритм

1. Получить и установить count = кол-во веденных строк
2. В цикле от 1 до count
    A. Получить строку
    B. Установить str_half = ''
    C. Разбить строку по символам и положить в массив A
    D. В цикле от 0 до (кол-во эл. в массиве / 2)
        i. Если i делится на 2 с остатком. Т.е. число является не четным, добавляем в строку str_half эл. A[i]
    E. Добавляем в массив для вывода
3. Выводим результат
Решение

my $count = <>;
my @result;
for (1..$count){
    chomp( my $str = <> );
    my $str_half = '';
    my @array = split '', $str;
    for (my $i = 0; $i < int(@array / 2); $i++) {
        $str_half .= $array[$i] unless $i % 2;
    }
    push @result, $str_half;
}

print "$_\n" for @result;
    

HS12HDPW - Hidden Password

Декодировать строку с помощью ключевых слов

Вход:

  1. Кол-во тест кейсов - слов которые нужно расшифорвать
  2. Для каждого кейса - число ключевых слов
  3. Сами ключевые слова разделенные пробелом
  4. Зашифрованное слово из 64 символов

Выход: расшифрованные слова по кол-ву кейсов. Каждая с новой строки

Пример

Input:
2
2
qwe345 rf3Arg
XSBSRasdew9873465hkldsfsalndfvnfq489uqovkLKJHaeDaae555Sk5asdpASD

3
2S4J5K 111111 lrtb2A
isimgsow45ipfgisd56wfgngdfcdkgc7kKKKkuuJJgfstdygQdWORQADFSLKF2K8

Output:
keep
coding

Explanation
Let us have a look at the first 6-tuple: qwe345

char. ASCII code
  q   113 = 01110001B      
  w   119 = 01110111B
  e   101 = 01100101B
  3    51 = 00110011B
  4    52 = 00110100B
  5    53 = 00110101B

a(blue bits)  = 110111B = 55
b(green bits) = 101110B = 46
    

Алгоритм

1. Получить кол-во кейсов
2. Для каждого кейса
    A. Получить ключевое слово
    B.