решить информатика PYTON Розв'язати задачі:
1. Капосний папуга навчився висмикувати у дідуся Василя волосся, який ще
залишилося в того на голові. Почавши з однієї волосини, він кожен день
збільшував порцію удвічі. Через скільки днів дідусеві не знадобиться
гребінець, якщо на початку у нього на голові було аж N волосин.
2. В понеділок Толя позичив у Миколки 2 цукерки і з задоволенням їх з'їв. У
вівторок він позичив у 2 рази більше цукерок, після чого віддав половину
боргу, а решту цукерок знову із задоволенням з'їв. Кожен наступний день він
позичав у 2 рази більше цукерок, ніж у попередній день, віддавши з них цілу
частину від половину боргу, а решту цукерок із задоволенням з'їдав. Скільки
цукерок з'їсть Толік через N тижнів? Скільки у нього при цьому складати борг?
Скільки цукерок встигне повернути за цей час Толік Миколці?
3. На дверях ліфта висіло загрозливе попередження про те, що двері
зачиняються самі в той самий момент, коли зайвий за вагою пасажир
переступить поріг ліфта. Який за рахунком пасажир постраждає, якщо ліфт
витримує вагу не більше S кг, а вага пасажирів, що стоять у черзі до ліфта,
дорівнює відповідно а1, а2, ... , аn?
Так как язык не указан, приведу пример на SWI-Prolog.
Код:
read_int(Int) :- read(Int), integer(Int).split_int_by_numbers(0, []) :- !.split_int_by_numbers(N, [Number|Ints]) :- Number is mod(N, 10), RestN is div(N, 10), split_int_by_numbers(RestN, Ints).test_to_div(_, []).test_to_div(N, [Number|Ints]) :- mod(N, Number) =:= 0, test_to_div(N, Ints). test(Int) :- split_int_by_numbers(Int, Numbers), test_to_div(Int, Numbers), write(Int), write(" - Yes!"), nl.test(Int) :- write(Int), write(" - No!"), nl.?- read_int(Int), test(Int).// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
begin
var a:=ArrRandom(ReadInteger('n='),0,2); a.Println;
a.Sorted.Println
end.
Тестовое решение:
n= 15
1 2 0 2 2 0 2 0 2 0 0 1 0 0 2
0 0 0 0 0 0 0 1 1 2 2 2 2 2 2
2. Но, поскольку считается, что школьникам больше заняться нечем, их заставляют писать примерно в таком стиле (и время займет, и ощибок понаделают):
// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
const
nn=100;
var
i,j,n,t:integer;
a:array[1..nn] of integer;
begin
Write('n='); Read(n);
Randomize;
for i:=1 to n do begin
a[i]:=Random(3);
Write(a[i],' ')
end;
Writeln;
for i:=1 to n-1 do
for j:=1 to n-1 do
if a[j]>a[j+1] then begin
t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t
end;
for i:=1 to n do Write(a[i],' ');
Writeln;
end.
Тестовое решение:
n=15
0 1 1 0 2 1 0 2 1 2 1 0 0 2 0
0 0 0 0 0 0 1 1 1 1 1 2 2 2 2