Водном племени был неизвестный язык. в алфавите этого языка было 32 буквы. все слова состояли из 5 букв. они читались одинаково слева на право и справа на лево. в слове повторяются только 2 буквы. сколько было слов в этом языке?
1. а) При каких значениях числа S Паша может выиграть в один ход? ответ: * при 12<=S<=28 Паша увеличивает количество камней в 3 раза и выигрывает в 1 ход ** при S=34 и S=35 Паша увеличивает количество на 2 камня и выигрывает в 1 ход
б) У кого из игроков есть выигрышная стратегия при S = 28, 30, 32? Опишите выигрышные стратегии для этих случаев. 28: у Паши: П*3=84 - победа Паши 30: у Паши: П+2=32 В+2=34 П+2=36 Победа Паши 32: у Вали: П+2=34 В+2=36 Победа Вали
2. У кого из игроков есть выигрышная стратегия при S = 10, 8? Опишите соответствующие выигрышные стратегии. 10: у Вали: П*3=30 В+2=32 П+2=34 В+2=36 - Победа Вали П+2=12 В*3=36 - победа Вали 8: у Паши: П+2=10 В+2=12 П*3=36 - Победа Паши В*3=30 П+2=32 В+2=34 П+2=36 - Победа Паши В*3=96 - Победа Паши
3. У кого из игроков есть выигрышная стратегия при S = 6? 6: у Вали
Постройте дерево всех партий, возможных при этой выигрышной стратегии (в виде рисунка или таблицы). На рёбрах дерева указывайте, кто делает ход, в узлах – количество камней в позиции см. фото
Program divisors;//вообще ничего не делает(аля название программы) var num,divisor,i,sum:longint;//описываем переменные типа longintbegin//начало программы write('Vvedite chislo:');//выводим текст readln(num);//считываем число write('Vvedite delitel:');//выводим текст read(divisor);//считываем заданное число(будем использовать при поиске делителей больше заданного) sum:=0;//зануляем переменную(изначально равна нулю, но на всякий случай ;) привет от с++) for i:=1 to num do //цикл от 1 до числа(можно оптимизировать идя до корня из num) begin//начало цикла if num mod i = 0 then//если на очередном шаге остаток от деления числа на i равен нулю begin//начало условия write(i,' ');//выводим делитель sum:=sum+i;//суммируем end;//конец условия end;//конец цикла writeln();//переходим на следующую строку writeln(sum);//выводим сумму for i:=1 to num do//аналогично выше begin if (num mod i = 0) and (i mod 2 = 0) then // если число делитель и делится на 2 begin write(i,' '); end; end; writeln(); for i:=1 to num do begin if (num mod i = 0) and (i mod 2 = 1) then // не делится на 2 begin write(i,' '); end; end; writeln(); for i:=1 to num do begin if (num mod i = 0) and (i>divisor) then // больше заданного числа begin write(i,' '); end; end;end.//конец программы
ответ:
* при 12<=S<=28 Паша увеличивает количество камней в 3 раза и выигрывает в 1 ход
** при S=34 и S=35 Паша увеличивает количество на 2 камня и выигрывает в 1 ход
б) У кого из игроков есть выигрышная стратегия при S = 28, 30, 32?
Опишите выигрышные стратегии для этих случаев.
28: у Паши: П*3=84 - победа Паши
30: у Паши: П+2=32 В+2=34 П+2=36 Победа Паши
32: у Вали: П+2=34 В+2=36 Победа Вали
2. У кого из игроков есть выигрышная стратегия при S = 10, 8?
Опишите соответствующие выигрышные стратегии.
10: у Вали: П*3=30 В+2=32 П+2=34 В+2=36 - Победа Вали
П+2=12 В*3=36 - победа Вали
8: у Паши: П+2=10 В+2=12 П*3=36 - Победа Паши
В*3=30 П+2=32 В+2=34 П+2=36 - Победа Паши
В*3=96 - Победа Паши
3. У кого из игроков есть выигрышная стратегия при S = 6?
6: у Вали
Постройте дерево всех партий, возможных при этой выигрышной стратегии (в виде рисунка или таблицы). На рёбрах дерева указывайте, кто делает ход, в узлах – количество камней в позиции
см. фото
var num,divisor,i,sum:longint;//описываем переменные типа longintbegin//начало программы write('Vvedite chislo:');//выводим текст readln(num);//считываем число write('Vvedite delitel:');//выводим текст read(divisor);//считываем заданное число(будем использовать при поиске делителей больше заданного) sum:=0;//зануляем переменную(изначально равна нулю, но на всякий случай ;) привет от с++) for i:=1 to num do //цикл от 1 до числа(можно оптимизировать идя до корня из num) begin//начало цикла if num mod i = 0 then//если на очередном шаге остаток от деления числа на i равен нулю begin//начало условия write(i,' ');//выводим делитель sum:=sum+i;//суммируем end;//конец условия end;//конец цикла writeln();//переходим на следующую строку writeln(sum);//выводим сумму for i:=1 to num do//аналогично выше begin if (num mod i = 0) and (i mod 2 = 0) then // если число делитель и делится на 2 begin write(i,' '); end; end; writeln(); for i:=1 to num do begin if (num mod i = 0) and (i mod 2 = 1) then // не делится на 2 begin write(i,' '); end; end; writeln(); for i:=1 to num do begin if (num mod i = 0) and (i>divisor) then // больше заданного числа begin write(i,' '); end; end;end.//конец программы