Procedure TForm1.Button1Click(Sender: TObject); var i1,i2,i3 : Integer; kk : Integer; Chislo : Integer; begin Memo1.Clear; kk := 0; for i1 := 1 to 9 do for i2 := 0 to 9 do for i3 := 0 to 9 do if ( (i1<>i2) and (i1<>i3) and (i2<>i3) ) then if ( Frac((i1+i2+i3)/7)=0 ) then begin Chislo := i1*100 + i2*10 + i3; if ( Frac(Chislo/7)=0 ) then begin Memo1.Lines.Append(inttostr(Chislo)); inc(kk); end; end; end;
Была задачка такая в школе у нас на одной важной работе. Про пещеры и клад. К ней нужно было применить алфавитный подход... <<Известно, что ровно в двух пещерах из пяти есть клады. Сколько битов нужно, чтобы закодировать информацию о расположении кладов?>> Если задачу решать традиционно, как на первый взгляд кажется - изящно, то ответ получится примерно таков: 1 2 3 4 5 0 1 0 0 1 Итого: 5 битов.
Мы же говорим о рациональном подходе. Всего 5 пещер. В двух клады. Сколько вариантов расположения кладов существует? 1 2 3 4 5 1-2,1-3,1-4,1-5,2-3,2-4,2-5,3-4,3-5,4-5 Итого: 10 вариантов - вот тебе и алфавит. Можешь пронумеровать варианты(0, 1,2,3...) и информацию хранить будешь в скольки битах? 10=2^i 2^3=8(10 сюда не входит) 2^4=16(10 входит. Пусть будет немного лишней информации, зато она не потеряется.) Получаем 4 бита.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку