Академический Документы
Профессиональный Документы
Культура Документы
Лапо
Методы
алгоритмизации
У ч е б н о е п о с о б и е д л я 8—9 к л а с с о в
общеобразовательной школы
с углубленным изучением информатики
с русским языком обучения
Допущено
Министерством образования
Республики Беларусь
Рецензенты:
канд. пед. наук, доцент кафедры прикладной математики и информати
ки БГПУ им. М. Танка П упцев А. £.; учитель информатики высшей
категории СШ № 2 г. Минска Савченкова Н. И.
З а ч а с т у ю р е ш е н и е з а д а ч и по и н ф о р м а т и к е п р о т е к а е т
с л е д у ю щ и м о б р а з о м : в ы с м о т р и т е на п о с т а н о в к у з а д а ч и
и, и с п о л ь з у я п р и о б р е т е н н ы е н а в ы к и и и з в е с т н ы е в а м
м е т о д ы , в ы д а е т е р е ш е н и е . П р и этом о б ы ч н о н е я в н о
с ч и т а е т с я , что « п е р в ы й в з г л я д — н а и б о л е е в е р н ы й » ,
и е с л и р е ш е н и е п о л у ч е н о , то на э т о м « а к т т в о р е н и я »
п р о г р а м м ы з а в е р ш е н . Н о н а с к о л ь к о это « т в о р е н и е » я в
ляется законченным и эффективным? Обычно при анали
з е т а к о г о р е ш е н и я о к а з ы в а е т с я , что п е р в ы й в з г л я д м о
ж е т в с е г о не у в и д е т ь , и что е с л и п о с л е него е щ е ч у т ь -
ч у т ь п о д у м а т ь , то р е з у л ь т а т п о л у ч а е т с я н а м н о г о л у ч ш е
(что в е р н о не т о л ь к о в и н ф о р м а т и к е ) .
У ч е б н о е п о с о б и е п р е д н а з н а ч е н о д л я того, ч т о б ы по
мочь в а м в ы б р а т ь э ф ф е к т и в н о е р е ш е н и е д л я п о с т а в л е н
ной з а д а ч и и р а с с к а з а т ь о с т а н д а р т н ы х п о д х о д а х к р е ш е
нию з а д а ч по и н ф о р м а т и к е .
Н е к о т о р ы е из р а с с м а т р и в а е м ы х в п о с о б и и з а д а ч в а м
у ж е встречались в курсе математики. Иногда для этих
з а д а ч п р е д л а г а ю т с я о т л и ч н ы е от у ж е и з в е с т н ы х м е т о д ы
р е ш е н и я . Эти м е т о д ы о р и е н т и р о в а н ы в п е р в у ю о ч е р е д ь
на п р и м е н е н и е к о м п ь ю т е р а , п о з в о л я ю щ е г о з а н е б о л ь ш о е
время выполнить большие объемы вычислений.
К н и г а состоит из 5 г л а в , в к о т о р ы х п р и в о д я т с я с в е д е
н и я из т а к и х о б л а с т е й м а т е м а т и к и , к а к г е о м е т р и я , а р и ф
метика, комбинаторика и теория алгоритмов. Главы
с о д е р ж а т теоретический материал, задачи для повторе
ния, задачи повышенной сложности и з а д а ч и д л я само
стоятельного решения.
Т е о р е т и ч е с к и й м а т е р и а л н а п р а в л е н на то, ч т о б ы д а т ь
п р е д с т а в л е н и е об о б щ и х п о д х о д а х и н а и б о л е е р а с п р о
страненных и эффективных методах решения задач.
Ф р а г м е н т ы а л г о р и т м о в п р и в о д я т с я на а л г о р и т м и ч е с к о м
языке, принятом в базовом курсе. Д л я задач повы
ш е н н о й с л о ж н о с т и п р и в о д я т с я у к а з а н и я по их р е ш е н и ю .
В конце книги д а н ы П р и л о ж е н и я , с о д е р ж а щ и е алго
р и т м ы на я з ы к е П а с к а л ь . Т е о р е т и ч е с к и й м а т е р и а л ,
предназначенный для факультативных занятий, обозна
чен з н а ч к о м *.
При написании была использована отечественная
и з а р у б е ж н а я л и т е р а т у р а по т е о р и и а л г о р и т м о в .
3
Глава 1. У Р А В Н Е Н И Е ПРЯМОЙ
Г е о м е т р и я р а з в и в а е т с я по м н о г и м н а п р а в л е н и я м .
Возникновение компьютеров привело к появлению такой
области математики, как вычислительная геометрия.
При создании современных приложений часто требуется
разработка эффективных алгоритмов для определения
в з а и м о р а с п о л о ж е н и я различных объектов на плоскости,
вычисления расстояний между ними, вычисления площа
дей ф и г у р и д р .
В д а н н о й г л а в е и з л а г а е т с я м а т е р и а л , ч а с т и ч н о из
в е с т н ы й в а м из к у р с а м а т е м а т и к и . М ы р а с с м о т р и м
методы решения геометрических задач, которые эффек
т и в н о р е а л и з у ю т с я с п о м о щ ь ю к о м п ь ю т е р а , что п о з в о л и т
в а м по д р у г о м у в з г л я н у т ь на в о п р о с ы , и з у ч а е м ы е в р а м
к а х ш к о л ь н о г о к у р с а г е о м е т р и и . Д л я этого п р и д е т с я
воспользоваться аналитическим представлением геомет
рических объектов.
§ 1. П Р Я М Ы Е И О Т Р Е З К И НА ПЛОСКОСТИ
В з а д а ч а х ч а с т о п р и х о д и т с я з а д а в а т ь на п л о с к о с т и
р а з л и ч н ы е г е о м е т р и ч е с к и е о б ъ е к т ы . П р о с т е й ш и м и гео
м е т р и ч е с к и м и ф и г у р а м и на п л о с к о с т и я в л я ю т с я т о ч к а
и п р я м а я . Точка задается указанием координат, напри
м е р Л ( 1 5 ; —5),'B(xi\ Прямую можно задавать
с помощью уравнения прямой. Существуют различные
ф о р м ы записи у р а в н е н и я прямой. Выбор какой-то конк
р е т н о й з а в и с и т от исходных д а н н ы х , з а д а ю щ и х п р я м у ю
на п л о с к о с т и . ( М о г у т б ы т ь з а д а н ы к о о р д и н а т ы д в у х
4
точек, ч е р е з к о т о р ы е п р о в о д и т с я п р я м а я , или к о э ф ф и ц и
енты при неизвестных в линейном уравнении.)
В декартовых координатах к а ж д а я прямая определя
ется уравнением первой степени. Уравнение вида
Ах + Ву + С = 0
А С
Обозначая 6 = — — и 6 = — — , получаем уравнение
в и д а y — kx-\-b. Е с л и ж е B — Q, то у р а в н е н и е имеет в и д
С
Х
= ~ Т
Р а с с м о т р и м д в е точки с к о о р д и н а т а м и (д^; у ) и х
Рис. 1 Рис. 2
5
( ь У2% л е ж а щ и е на прямой y==kx-\-b.
х
И х координаты
удовлетворяют уравнению прямой:
y = kx + b, y = kx + b.
l l 2 2
У2 — У1 = к(х 2 — х ),
1 или k=-—-.
х
2— \ х
Поэтому
У — У\ Уг — У\ и л и х—х, у — у,
X — Jf | Х —\ 2
х
Х — X,
2 у2 — У\
Уравнение
х—х, _ у—у,
2—\
х
Уч У\
х
Н е д о с т а т к о м э т о й ф о р м у л ы я в л я е т с я ее н е о п р е д е
л е н н о с т ь при х — х и ( и л и ) у = у . П о э т о м у ее л у ч ш е
х 2 х 2
использовать в виде
Н е т р у д н о з а м е т и т ь , что в ы р а ж е н и е
(* — Xi)(y — Ух)—(У — У\)(Х2 — х )
2 {
м о ж е т б ы т ь п р и в е д е н о к виду
Ах + Ву + С,
г д е А = у — г/„ В = х — х , С= —x (y
2 х— y ) + y {x — x ).
2 x 2 l l 2 i
1
Здесь и далее приводятся только фрагменты алгоритмов.
6
A : = y 2 —yl
B:=xl-x2 (1.1)
С: = —xl*(y2 —yl)4-yl*(x2 —xl)
Р а с с м о т р и м п р и м е р : x = 0, у = 0, х =1, t х 2 у = 2. У р а в
2
н е н и е п р я м о й , п р о х о д я щ е й ч е р е з точки (х ; { у ) и (х ; у ),
х 2 2
будет следующим:
А = у - = 2-0
3 = 2,
У 1
В = х —х у = 0 — 1 = — 1,
2
С = - х , (y -y ) + y (x -x )=0-22+ 0-l=0.
i [ 2 l
нению
(x — xi)(y 2 — y ) — (y — y ){x
1 l 2 — x ) = 0.
l
Э т о з н а ч и т , что е с л и и м е е т с я т о ч к а с к о о р д и н а т а м и
(х ; г/ ) и ( х — х )(у
0 0 — у ) — (у — у ){х
0 х — х ) = 0,
2 х 0 х 2 {
т о э т а т о ч к а л е ж и т на п р я м о й . В д а л ь н е й ш е м в м е с т о
выражения
(* — Xi)(y — yi) — (y — yi)(x — Xi) 2 2
мы и н о г д а б у д е м и с п о л ь з о в а т ь д л я к р а т к о с т и обозна
чение
Ах + Ву + С или f(xi, у х , у , х, у). ь 2 2
П р я м а я Ах + By + С — 0, п р о х о д я щ а я ч е р е з д в е з а
д а н н ы е т о ч к и с к о о р д и н а т а м и (х,; у ) и (х ; у ), р а з б и в а е т { 2 2
п л о с к о с т ь на д в е п о л у п л о с к о с т и . Р а с с м о т р и м в о з м о ж н ы е
значения выражения Ах-\-Ву-\-С.
1) Ах-\-Ву-\~С = 0 — определяет геометрическое ме
сто точек, л е ж а щ и х на п р я м о й .
З а п и ш е м алгоритм для определения, л е ж и т ли точка
с к о о р д и н а т а м и (х ; у ) на п р я м о й , п р о х о д я щ е й ч е р е з
3 3
точки (х,; у ) и ( х ; у ). П е р е м е н н а я Р — п е р е м е н н а я
{ 2 2
7
т о ч к а л е ж и т на п р я м о й , и и м е е т з н а ч е н и е « л о ж ь » в про
тивном случае.
Р : = «ложь»
е с л и (хЗ — x l ) * ( y 2 — y l ) — ( у З — y l ) * ( x 2 — х1) = 0
| то Р : = « и с т и н а » (1-2)
все
2) Ах-\-Ву-\- С > 0 — о п р е д е л я е т г е о м е т р и ч е с к о е мес
то т о ч е к , л е ж а щ и х по одну с т о р о н у от п р я м о й .
3) Ах-\-Ву-\-С<0— о п р е д е л я е т г е о м е т р и ч е с к о е мес
то т о ч е к , л е ж а щ и х по д р у г у ю с т о р о н у от п р я м о й .
Э т о з н а ч и т , что если д л я д в у х т о ч е к с к о о р д и
н а т а м и ( х ; у ) и (л: ; г/ ) з н а ч е н и я в ы р а ж е н и й Л х +
3 а 4 4 3
-\-Ву -\-С
3 и Л х , + Вг/ + С и м е ю т р а з н ы е з н а к и , то э т и
4
т о ч к и л е ж а т по р а з н ы е с т о р о н ы от п р я м о й , п р о х о д я щ е й
ч е р е з точки с к о о р д и н а т а м и (л:,; у ) и (х ; у ), а е с л и
х 2 2
о д и н а к о в ы е , то э т и т о ч к и л е ж а т по о д н у сторону от
прямой. При этом число 0 имеет з н а к и « + » и « — » .
Н а р и с у н к е 3 т о ч к и (х ; у ) и ( х ; г/ ) л е ж а т по
ъ 3 4 4
одну с т о р о н у от п р я м о й , т о ч к и ( j c ; у ) и (х ; у ) —
3 3 5 ь
по р а з н ы е с т о р о н ы от п р я м о й , а т о ч к а ( # ; у ) л е ж и т на
6 6
прямой.
Рассмотрим п р и м е р : Jt, = 1, # i = 2, х = Ъ, г/ = 6. 2 2
У р а в н е н и е п р я м о й , п р о х о д я щ е й ч е р е з точки (*,; у) х
и (х ; у ), б у д е т с л е д у ю щ и м :
2 2
^ = ^ 2 — ^1 = 6 — 2 = 4,
В=х —х =1{ — 5 = —4,
2
С = —х {у — у) + 1 2 1
+ г/, (х — * , ) — — 1-4 +
2
+ 2 - 4 = 4.
Следовательно, урав
нение прямой будет иметь
в и д : 4х — 4г/ + 4 = 0, или
х — г / + 1 = 0. Подставим
к о о р д и н а т ы т о ч е к (3; 4),
( 1 ; 1), (2; 0), (0; 2) в у р а в -
Рис. з нение прямой. Получим:
8
1-3-1.4 + 1=0, 1-2—1-0+1Х),
Ы — Ы + 1>0, 1-0-1-2+КО.
С л е д о в а т е л ь н о , т о ч к а ( 3 ; 4) л е ж и т на п р я м о й , точки
( 1 ; 1) и (2; 0) л е ж а т по одну с т о р о н у от п р я м о й , а т о ч к и
( 1 ; 1) и (0; 2) — по р а з н ы е с т о р о н ы от п р я м о й .
А л г о р и т м о п р е д е л е н и я в з а и м н о г о р а с п о л о ж е н и я то
чек ( х ; у ) и (х ; у ) о т н о с и т е л ь н о п р я м о й , п р о х о д я щ е й
3 3 4 4
ч е р е з т о ч к и (х ; у ) и (х , у ), м о ж н о з а п и с а т ь с л е д у ю щ и м
х х 2 2
образом:
L : = «по одну»
Z l : = ( х З —xl)*(y2 —yl) — ( 3 - у 1 ) * ( х 2 —xl) У
Z2: = ( х 4 — x l ) * ( y 2 - y l ) - ( y 4 - y l ) * ( x 2 — xl)
если Z1*Z2<0
| то L : = « n o разные» (1-3)
все
(х ; у ). П у с т ь о б щ е е у р а в н е н и е п е р в о й п р я м о й , п р о х о д я
4 4
щ е й ч е р е з точки (х \ г/,) и (х ; у ), и м е е т в и д
х 2 2
А х + В у + С = 0, 1 1 1
а у р а в н е н и е второй п р я м о й , п р о х о д я щ е й ч е р е з точки (х ; 3
г/ ) и (х ; у ), в ы г л я д и т т а к :
3 4 4
А х + В у + С = 0.
2 2 2
О п р е д е л и м р а с п о л о ж е н и е т о ч е к (х ; у ) и (х ; у)3 ъ 4 4
о т н о с и т е л ь н о п е р в о й п р я м о й . Е с л и они р а с п о л о ж е н ы по
о д н у с т о р о н у от п р я м о й , то о т р е з к и не м о г у т п е р е с е к а т ь
ся. Аналогично можно определить положение точек
(х ; у ) и (х ; у ) о т н о с и т е л ь н о д р у г о й п р я м о й .
х х 2 2
Т а к и м о б р а з о м , если з н а ч е н и я п а р ы в ы р а ж е н и й
9
£|=^i*3 + £i#i4C,
У и Z = Ax + By + C
2 l 4 l 4 l
Z = Ax + By + C
3 2 { 2 { 2
и 2 = Л лг + В У2+С
о 4 2 2 2 2
и Z 4 и м е ю т о д и н а к о в ы е з н а к и , то о т р е з к и не п е р е с е к а
ются.
Различные случаи расположения отрезков показаны
на р и с у н к е 4.
Н а этом р и с у н к е о т р е з к и с к о н ц а м и в т о ч к а х (д^; /у,),
{х \ у ) и (х ; у ), ( х ; у ) п е р е с е к а ю т с я , о т р е з к и с к о н ц а м и
2 2 4 4 5 5
в т о ч к а х (*,; #,), (х , у ) и (х ; у ), (х , у ) не п е р е с е к а ю т с я ,
2 2 3 3 4 4
а о т р е з к и с к о н ц а м и в т о ч к а х (х ; у ), (х , у ) и (х \ 3 у) 3 4 4 4 4
и
(х^ Уь) и м е ю т о б щ у ю в е р ш и н у . П о с л е д н и й с л у ч а й
можно считать частным случаем пересечения.
Алгоритм для определения, пересекаются ли два
о т р е з к а с к о н ц а м и в т о ч к а х {х ; у ), (х ; у ) и (х ; у ), ( х ;
х { 2 2 3 3 4
у ), б у д е т с л е д у ю щ и м :
4
Р : = «истина»
Z I : = ( x 3 —xl)*(y2 • 1 ) ( у З у 1 ) * ( х 2 х 1 )
У
Z 2 : = (х4 — x l ) * ( y 2 • у 1 ) ( у 4 у 1 ) * ( х 2 х 1 )
если Zl*Z2>0
| то Р : = « л о ж ь » (1.4)
все
Z3: =(xl—хЗ)*(у4 •У3)(у1 у З ) * ( х 4 •хЗ)
Z4: = (х2хЗ)*(у4 •У3)(у2 у З ) * ( х 4 •хЗ)
если Z3*Z4>0
| то Р : = « л о ж ь »
все
10
к р а й н е й с и т у а ц и и , к о г д а д в а о т р е з к а л е ж а т на одной
прямой. В этом случае
(*з — х,)(у а — y )~(Уз—yi)(x
t 2 — x )=0 t и (х —х,)Х
4
Н а р и с у н к е 5 о т р е з к и , л е ж а щ и е н а одной п р я м о й , не
п е р е с е к а ю т с я , а на рисунке б — п е р е с е к а ю т с я .
Д л я того чтобы определить взаимное р а с п о л о ж е н и е
т а к и х о т р е з к о в , поступим с л е д у ю щ и м о б р а з о м . О б о з н а ч и м
k — m\n(x{, х ); k — ma\{x \
{ 2 2 х ); fc = m i n ( x ; х )\ k =
i 2 3 3 4 4
= т а х ( д г ; x ).
3 4
З д е с ь ky я в л я е т с я л е в о й , a k — п р а в о й т о ч к о й п р о
2
з а д а н н о г о к о о р д и н а т а м и (х ; у ), (х ; у )) на о с ь Ох. А н а
3 3 4 4
л о г и ч н о и щ е м п р о е к ц и и н а ось Оу.
О т р е з к и , л е ж а щ и е на
одной прямой, будут пере
с е к а т ь с я т о г д а , к о г д а их
п р о е к ц и и на к а ж д у ю ось
пересекаются. (Следует
з а м е т и т ь , что е с л и п р о е к
ции д в у х произвольных
отрезков пересекаются,
т о э т о не з н а ч и т , что и
сами отрезки пересека
ю т с я , что в и д н о на р и
с у н к е 7.) Рис. 7
11
Д л я определения взаимного расположения проекций
на ось Ох в о с п о л ь з у е м с я с л е д у ю щ и м ф а к т о м (см. р и с .
5 и 6): к о о р д и н а т а л е в о й точки п е р е с е ч е н и я п р о е к ц и й L x
р а в н а т а х ( й , ; й ) , т. е. м а к с и м а л ь н о й из к о о р д и н а т
3
о т р е з к и п е р е с е к а л и с ь , н е о б х о д и м о , чтобы л е в а я к о о р д и
н а т а п е р е с е ч е н и я п р о е к ц и й б ы л а не б о л ь ш е п р а в о й
координаты пересечения отрезков (такой случай имеет
м е с т о на р и с . 5, к о г д а L = x , a R = x ). П о э т о м у у с л о в и
x 3 x 2
ем п е р е с е ч е н и я п р о е к ц и й я в л я е т с я в ы п о л н е н и е н е р а
венства L ^R .
X X
с о о т в е т с т в у ю щ и е п р о е к ц и и на ось Оу.
С л е д у е т о т м е т и т ь , что д л и н а п е р е с е ч е н и я п р о е к ц и й
в этом с л у ч а е р а в н а в е л и ч и н е R —L x x( е с л и R —L = О,
x x
то п р о е к ц и и и м е ю т т о л ь к о о б щ у ю т о ч к у ) .
ц е в ы е точки в т о р о г о о т р е з к а .
Тогда д л я определения точки пересечения отрезков
достаточно решить систему уравнений
Д о м н о ж и в п е р в о е у р а в н е н и е на А , 2 а в т о р о е — на Аи
получим
12
(А А х
2 1 + А В у=—А С ,
я 1 а 1
[A A x
1 2 + A B y=-A C .
l 2 l 2
У =
А В,-А,В
2 2
в,с —В С,
2 2
В%А — В,А 2 2
Это с п р а в е д л и в о в с л у ч а е , е с л и А -В — А -В Ф0. Но 2 х 1 2
м ы у ж е з н а е м , что о т р е з к и п е р е с е к а ю т с я и не л е ж а т на
одной п р я м о й , а это н е в о з м о ж н о , если А -В — АВ = 0. 2 х г 2
Вопросы д л я повторения
1. Как о п р е д е л и т ь к о э ф ф и ц и е н т ы о б щ е г о у р а в н е н и я п р я м о й ,
если известно уравнение прямой с угловым коэффициентом?
2. К а к и м м о ж е т б ы т ь в з а и м н о е р а с п о л о ж е н и е о т р е з к а и п р я
мой?
3. Как о п р е д е л и т ь , ч т о о т р е з к и п а р а л л е л ь н ы ?
4. Как о п р е д е л и т ь в з а и м н о е р а с п о л о ж е н и е д в у х п а р а л л е л ь
ных о т р е з к о в ?
§ 2. Р А С С Т О Я Н И Е КА ПЛОСКОСТИ
2 . 1 . Расстояние м е ж д у точками.
Расстояние от точки д о прямой
Р а с с т о я н и е м е ж д у т о ч к а м и М (х ; у ) и М (х ; х { х 2 2 у)
2 на
п л о с к о с т и ( р и с . 8) о п р е д е л я е т с я по ф о р м у л е
D ^ ( x A - x 2 f + ( y i -y f. 2
Р а с с т о я н и е от точки до п р я м о й на п л о с к о с т и о п р е д е
ляется как длина отрезка перпендикуляра, опущенного
из точки на п р я м у ю . У р а в н е н и е в и д а
13
Ах . By . С _ п
j. ~г" j ~т~ j о,
2 2
где Т=\А -\-В , причем С < ! 0 (чего можно достигнуть
изменением знака выражения), называется нормальным
уравнением прямой. Это у р а в н е н и е о б л а д а е т тем свой
с т в о м , что п р и п о д с т а н о в к е к о о р д и н а т п р о и з в о л ь н о й
точки в в ы р а ж е н и е {Ах-\- By -\- С)/Т п о л у ч а е т с я з н а ч е
ние, по а б с о л ю т н о й в е л и ч и н е р а в н о е р а с с т о я н и ю от
точки д о п р я м о й ( р и с . 9).
З а п и ш е м а л г о р и т м д л я о п р е д е л е н и я р а с с т о я н и я от
точки (х ; у ) до п р я м о й , п р о х о д я щ е й ч е р е з точки {х ; у )
3 3 х {
и (х ;
2 у ): 2
А : = у 2 —yl
В : = x l — х2
С: = xl*(y2 —yl) + yl*(x2 —xl) (1.5)
Т: = S Q R T ( A * A + B *B )
D: = A B S ( ( A * x 3 + B *y3 + C)/T)
Р а с с м о т р и м п р и м е р . П у с т ь х = 0, / у , = 0 , х — 3, у = 4,
х 2 2
х = — 1, у = 7. Т о г д а у р а в н е н и е п р я м о й , п р о х о д я щ е й
3 3
ч е р е з т о ч к и (л:,; у ) и (х ; у ), б у д е т с л е д у ю щ и м :
{ 2 2
Л = г/ — ^ 1 = 4 — 0 = 4,
2
В — х — х — 0 — 3 = — 3,
х 2
С = = x x
~ i(Vz~ yi) + yi( 2 — *i) = 0 4 + 0 3 = 0,
2
Т=^А* + В = V 4 4 + ( — 3 ) ( —3T = V25 = 5 ,
£> = \(Ax + By +C)/T\ = | ( 4 ( l) + ( _ 3 ) 7
3 3 +
+ 0)/5|=5.
14
2.2. Расстояние м е ж д у точкой и отрезком
т о ч к и л е ж а т на о д н о й п р я м о й и т а к о г о т р е у г о л ь н и к а не
существует. В этом случае, однако, мы будем полагать,
что т р е у г о л ь н и к с у щ е с т в у е т , п р а в д а он в ы р о ж д е н н ы й
(особый). В в ы р о ж д е н н о м треугольнике вершины могут
л е ж а т ь на о д н о й п р я м о й ( с м . р и с . 10, а).
Б о л е е того, м ы б у д е м п о л а г а т ь , что д а н н ы й о т р е з о к
является основанием рассматриваемого треугольника
( с м . р и с . 10, б, в).
П р и т а к и х п р е д п о л о ж е н и я х д л я р е ш е н и я исходной
з а д а ч и н а м д о с т а т о ч н о о п р е д е л и т ь , я в л я е т с я л и один из
у г л о в при о с н о в а н и и т у п ы м . Д е й с т в и т е л ь н о , е с л и один из
ху
2 2
а 6
Рис. 10
15
у г л о в при о с н о в а н и и т у п о й , то п е р п е н д и к у л я р , о п у щ е н
ный из в е р ш и н ы , с о о т в е т с т в у ю щ е й исходной т о ч к е , не
п о п а д а е т на о с н о в а н и е ( о т р е з о к ) . Е с л и угол не т у п о й , то
п е р п е н д и к у л я р , о п у щ е н н ы й из в е р ш и н ы , с о о т в е т с т в у ю
щей исходной т о ч к е , п о п а д а е т на о с н о в а н и е ( о т р е з о к ) .
Д л я решения последней задачи воспользуемся следу
ю щ и м с в о й с т в о м . П у с т ь а, Ь, с — д л и н ы сторон т р е у г о л ь
н и к а , п р и ч е м с •— д л и н а о с н о в а н и я . Т о г д а т р е у г о л ь н и к
я в л я е т с я т у п о у г о л ь н ы м п р и о с н о в а н и и , если
а >Ь
2 2
+ с 2
или Ь >а +с .
2 2 2
в т о ч к а х {х{, у ) и (х ; у ). И е с л и не п е р е с е к а е т , то р а с
х 2 2
с т о я н и е от точки д о о т р е з к а р а в н о м и н и м у м у из в е л и ч и н
а, Ь. Е с л и ж е п е р е с е к а е т , то н е о б х о д и м о в о с п о л ь з о в а т ь с я
ф о р м у л о й р а с с т о я н и я от точки до п р я м о й .
1. Как о п р е д е л и т ь р а с с т о я н и е м е ж д у д в у м я т о ч к а м и ?
2. Ч е м у р а в н о р а с с т о я н и е м е ж д у т о ч к о й и п р я м о й ?
3. Как о п р е д е л я е т с я р а с с т о я н и е м е ж д у о т р е з к а м и ?
§ 3. МНОГОУГОЛЬНИКИ
3 . 1 . Виды многоугольников
А_А
п х п ( р и с . 11, а ) . Т о ч к и н а з ы в а ю т с я вершинами
л о м а н о й , а о т р е з к и — звеньями. Наиболее распростра
ненным способом з а д а н и я ломаной является использова
ние т а б л и ц ы , э л е м е н т ы которой с о о т в е т с т в у ю т к о о р д и н а
т а м в е р ш и н л о м а н о й в п о р я д к е ее о б х о д а из одного
к о н ц а в д р у г о й . Длиной ломаной называется сумма длин
ее з в е н ь е в .
16
Рис. 11
М н о г о у г о л ь н и к я в л я е т с я выпуклым, если д л я к а ж д о й
п р я м о й , п р о х о д я щ е й ч е р е з л ю б у ю его с т о р о н у , все
о с т а л ь н ы е в е р ш и н ы л е ж а т в одной п о л у п л о с к о с т и отно
с и т е л ь н о п р я м о й . П р о в е р и м д л я к а ж д о й п р я м о й , прохо
д я щ е й ч е р е з в е р ш и н ы (х,.; У\) и (х , у ), (х \ у ) и (х ; у ),
2 2 2 2 3 3
л о ж е н и е в е р ш и н м н о г о у г о л ь н и к а . Е с л и они к а ж д ы й р а з
р а с п о л о ж е н ы в одной п о л у п л о с к о с т и о т н о с и т е л ь н о п р о
в е д е н н о й п р я м о й , то м н о г о у г о л ь н и к в ы п у к л ы й . Е с л и ж е
17
Рис. 12
н а й д е т с я п р я м а я , п р о х о д я щ а я ч е р е з о д н у из с т о р о н ,
и п а р а в е р ш и н м н о г о у г о л ь н и к а , л е ж а щ и х по р а з н ы е
с т о р о н ы о т н о с и т е л ь н о п р о в е д е н н о й п р я м о й , то м н о г о
у г о л ь н и к не я в л я е т с я в ы п у к л ы м . С л у ч а и в ы п у к л о г о и не
в ы п у к л о г о м н о г о у г о л ь н и к о в и з о б р а ж е н ы на р и с у н к е 12.
М о ж н о з а м е т и т ь , что д л я к а ж д о й п р я м о й , п р о х о д я
щ е й ч е р е з в е р ш и н ы (*,; t/,) и ( х ; у ), (х , у ) и ( х ; у ),
2 2 2 2 3 ъ
Е с л и они к а ж д ы й р а з р а с п о л о ж е н ы в одной п о л у п л о с к о
сти о т н о с и т е л ь н о п р о в е д е н н о й п р я м о й , то м н о г о у г о л ь н и к
выпуклый. Если же найдется прямая и пара вершин
м н о г о у г о л ь н и к а , л е ж а щ и х по р а з н ы е с т о р о н ы о т н о с и
т е л ь н о п р о в е д е н н о й п р я м о й , то м н о г о у г о л ь н и к не я в л я
ется в ы п у к л ы м . Поэтому д л я определения, является ли
многоугольник выпуклым, достаточно воспользоваться
а л г о р и т м о м (1.6).
L : == « В ы п у к л ы й »
нц д л я i от 1 до п
j : = m o d ( i , n)-f-l гномер в е р ш и н ы после в е р ш и н ы i
k:=mod(j, п)+1 : н о м е р в е р ш и н ы после в е р ш и н ы j
m: = i — 1
если i = 1
I то m : = n : н о м е р в е р ш и н ы п е р е д вершиной i
все (1-6)
Z l : = ( х [ m ] - x [i])*(y [ j ] - y [ i ] ) - ( y [ r n ] - y [i])*(x [ j ] -
-хШ)
18
Z2:=(x[k]-x[i])*(y[j]-y[i])-(y[k]-y[i])*(x[j]-
-x[i])
если Z 1 * Z 2 < 0
I то L : = « Н е в ы п у к л ы й »
все
кц
Вопросы для повторения
1. К а к и е б ы в а ю т о б х о д ы многоугольника?
2. Какой м н о г о у г о л ь н и к н а з ы в а е т с я выпуклым?
§ 4. П Л О Щ А Д И ФИГУР
4 . 1 . П л о щ а д ь треугольника
Д л я в ы ч и с л е н и я п л о щ а д и т р е у г о л ь н и к а ( р и с . 13) и з
вестна формула Герона:
S=^p(p~a)(p-b)(p-c),
где а, Ь, с — д л и н ы сторон т р е у г о л ь н и к а , а р — его
п о л у п е р и м е т р , т. е. р = (а-\-b + с ) / 2 .
Т а к к а к при з а д а н н ы х к о о р д и н а т а х в е р ш и н т р е у г о л ь
н и к а м о ж н о в ы ч и с л и т ь д л и н ы его сторон, то а л г о р и т м
п о и с к а п л о щ а д и т р е у г о л ь н и к а с в о д и т с я к поиску д л и н
сторон и и с п о л ь з о в а н и ю ф о р м у л ы Г е р о н а .
р : = ( а + Ь + с)/2 (1.7)
S : = SQRT (р*(р — а)*(р —Ь)*(р —с))
Однако такой метод вычисления площади имеет
один с у щ е с т в е н н ы й н е д о с т а т о к : н е о б х о д и м о в ы п о л н е н и е
операции нахождения квад
р а т н о г о к о р н я из ч и с л а . П р и
в ы п о л н е н и и этой о п е р а ц и и
часто происходит потеря точ
ности, что м о ж е т п р и в е с т и к
а А
получению не совсем точного \\\\хш&
р е з у л ь т а т а . П о э т о м у , чтобы
и з б е ж а т ь возможных оши
бок, в д а л ь н е й ш е м будут
использоваться другие фор
мулы. Рис. 13
19
4.2. П л о щ а д ь прямоугольника
Хуг 2
М ы будем рассматривать
п р я м о у г о л ь н и к и , с т о р о н ы кото
рых п а р а л л е л ь н ы осям коорди
н а т ( р и с . 14).
В этом с л у ч а е п р я м о у г о л ь
ник м о ж е т б ы т ь о п р е д е л е н од
ной из с в о и х д и а г о н а л е й . Это
з н а ч и т , что п а р а точек на п л о
Рис. 14 с к о с т и с к о о р д и н а т а м и (х ; у)
{ {
и (х ; у ), с о о т в е т с т в у ю щ а я к о н ц а м д и а г о н а л и , о д н о з н а ч
2 2
но о п р е д е л я е т р а с п о л о ж е н и е и р а з м е р п р я м о у г о л ь н и к а .
Такое задание более удобно вместо описания прямоуголь
ника посредством последовательности вершин в порядке
о б х о д а . К р о м е того, при т а к о м з а д а н и и л е г к о в ы ч и с л и т ь
п л о щ а д ь п р я м о у г о л ь н и к а по ф о р м у л е
S=\(x 2 — x )(y
i 2 — y )\,
1
д л и н а п р о е к ц и и п р я м о у г о л ь н и к а на ось Оу ( д л и н а
с т о р о н ы , п а р а л л е л ь н о й оси Оу).
4 . 3 . П л о щ а д ь трапеции
М ы б у д е м р а с с м а т р и в а т ь т р а п е ц и и , о с н о в а н и я кото
р ы х п а р а л л е л ь н ы оси Оу, о д н а из б о к о в ы х сторон л е
ж и т на оси Ох, а д р у г а я р а с п о -
л о ж е н а в ы ш е оси Ох ( р и с . 15).
В этом с л у ч а е т р а п е ц и я мо
ж е т б ы т ь о п р е д е л е н а п а р о й то
чек (*,; у ) и (х ; у ), с о о т в е т с т
х 2 2
20
1*2 — *il(y + yt)
s a
где \x — X [ | — в ы с о т а
2 трапеции, a y 2 я У\— длины ее
оснований.
С н а ч а л а мы р а с с м о т р и м п л о с к и е м н о г о у г о л ь н и к и ,
р а с п о л о ж е н н ы е в ы ш е оси Ох.
Традиционно при подсчете п л о щ а д и произвольно
го м н о г о у г о л ь н и к а его р а з б и в а ю т на треугольники
и н а х о д я т п л о щ а д ь к а ж д о г о из них. С у м м а п л о щ а д е й
этих треугольников равна п л о щ а д и данного многоуголь
ника.
О д н а к о при этом возникает вопрос, каким образом
д е л а т ь это р а з б и е н и е , если м н о г о у г о л ь н и к з а д а н к о о р д и
н а т а м и л о м а н о й в п о р я д к е ее о б х о д а и при этом не
является выпуклым.
Б о л е е р а ц и о н а л ь н ы м способом нахождения п л о щ а д и
м н о г о у г о л ь н и к а я в л я е т с я его п р е д с т а в л е н и е в в и д е к о м
б и н а ц и и т р а п е ц и й . П р и этом с ч и т а е т с я , что если р а с
с м а т р и в а е т с я т р а п е ц и я , у которой лг, < х , то з н а ч е н и е ее
2
п л о щ а д и б е р е т с я со з н а к о м ( р и с . 16, а ) , а если
х ~>х
{ ъ то з н а ч е н и е ее п л о щ а д и б е р е т с я со з н а к о м « — »
( р и с . 16, б).
При вычислении значения площади используется
формула
а б
У
х
гУг
+
О О X
Рис. 16
21
с ]Хг — х,\(У2 + У\)
И с п о л ь з у я т а к о й подход, ф о р м у л а д л я п о д с ч е т а п л о
щ а д и многоугольника, определяемого ломаной с коорди
натами вершин «/,), (jt ; у ), ( * „ _ , ; # „ _ , ) , (х ;
2 у ),2 п п
s_\(x —x )(y +y )
i l 2 l ^ (х —х )(,у +у )
3 2 3 2 ^ | ( * | — * „ ) ( У | + У„)|
или
(x -x ){y +y )+(x -x )(y +y )+...+(x -x„)(y +y )
2 l 2 x 3 2 3 2 l i n
ние у к о о р д и н а т ы д л я в е р
шин м н о г о у г о л ь н и к а в исход
ной с и с т е м е к о о р д и н а т . Т а к о е
преобразование соответствует
п а р а л л е л ь н о м у п е р е н о с у мно-
Рис. 17 г о у г о л ь н и к а п а р а л л е л ь н о оси
22
Оу и г а р а н т и р у е т , что в новой с и с т е м е к о о р д и н а т ни одна
вершина многоугольника не будет расположена ниже оси Ох.
Алгоритм д л я определения п л о щ а д и плоского много
у г о л ь н и к а , з а д а н н о г о к о о р д и н а т а м и его в е р ш и н в п о р я д
ке их о б х о д а по к о н т у р у , б у д е т т а к и м .
(Внимание! З д е с ь и в дальнейшем мы будем предпо
л а г а т ь , что о б х о д м н о г о у г о л ь н и к а з а д а е т с я n + 1 в е р ш и
ной, п р и ч е м («-{- 1)-я в е р ш и н а с о в п а д а е т с п е р в о й в е р ш и
ной о б х о д а . )
ymin:=y[l]
н ц д л я к от 2 д о п
если у г ш ' п > у [ к ]
| то y m i n : = у [к]
все
кц
н ц д л я к от 1 д о n + l
| yl[k]:=y[k]-ymin (1.8)
КЦ
S:=0
нц д л я к от 1 до п
| S : = S + ( x [ k + l ] - x [ k ] ) * ( y l [ к + 1] + у1 [к])
КЦ
S:=ABS(S)/2
1. Как м о ж н о в ы ч и с л и т ь п л о щ а д ь т р е у г о л ь н и к а , е с л и и з в е с т н ы
координаты его вершин?
2. Какие п р е о б р а з о в а н и я м о ж н о сделать, чтобы многоугольник
л е ж а л в ы ш е о с и Ох?
3. К а к о й с п о с о б в ы ч и с л е н и я п л о щ а д и т р е у г о л ь н и к а б о л е е э ф
ф е к т и в е н : ф о р м у л а Г е р о н а или о б щ а я ф о р м у л а ?
§ 5. В З А И М Н О Е Р А С П О Л О Ж Е Н И Е ФИГУР
НА П Л О С К О С Т И
5 . 1 . Взаимное р а с п о л о ж е н и е многоугольника и точки
С у щ е с т в у е т много с п о с о б о в о п р е д е л е н и я в з а и м н о г о
р а с п о л о ж е н и я м н о г о у г о л ь н и к а и т о ч к и . Р а с с м о т р и м один
из н а и б о л е е у п о т р е б и т е л ь н ы х с п о с о б о в , к о т о р ы й н а з ы в а -
23
е т с я методом сканирующей прямой, и о с н о в ы в а е т с я на
следующем.
Н а х о д я с ь в д а н н о й т о ч к е (х ; у ), м ы н а ч и н а е м д в и
0 0
Рис. 18
24
В этом с л у ч а е з а д а ч а в з а и м н о г о р а с п о л о ж е н и я м н о
г о у г о л ь н и к а и точки с в о д и т с я к п о д с ч е т у ч и с л а п е р е с е ч е
ний п о л у ч е н н о г о о т р е з к а и сторон многоугольника.
В м а с с и в а х X и У х р а н я т с я к о о р д и н а т ы в е р ш и н много
у г о л ь н и к а в п о р я д к е о б х о д а , х[0], у[0] — к о о р д и н а т ы
исходной т о ч к и .
xmin: = х [ 1 ]
н ц д л я к от 2 до п
если x m i n > x [ k ]
| то x m i n : = х [ к ]
все
кц
х: = x m i n — 1
У.=У[0]
S:=0 (1.9)
н ц д л я i от 1 до п
Zl:=(x[i]-x[0])*(y-y[0])-(y[i]-y[0])*(x-x[0])
Z2:=(x[i + l]-x[0])*(y-y[0])-(y[i+l]-
_y[0]).(x-x[0])
если Z 1 * Z 2 < 0
I то S : = S + 1
все
кц
L:=«внутри»
если mod ( S , 2 ) = 0
I то L : = «вне»
все
Т а к о й п о д х о д т р е б у е т особого а н а л и з а с л у ч а е в , к о г д а
полученный отрезок пересекает сторону многоугольника
в концевой точке.
Е с л и о т р е з о к п е р е с е к а е т одну из в е р ш и н м н о г о у г о л ь
н и к а ( н а п р и м е р , А ), т о м о ж е т б ы т ь 2 с л у ч а я ( р и с . 19):
х
1) О б е с т о р о н ы м н о г о у г о л ь н и к а , в х о д я щ и е в в е р ш и н у
А л е ж а т по о д н у с т о р о н у от о т р е з к а ( р и с . 19, а ) . К о л и
ъ
ч е с т в о п е р е с е ч е н и й м о ж н о с ч и т а т ь р а в н ы м 2 ( и л и 0);
25
At
a
Рис. 19
2) с т о р о н ы м н о г о у г о л ь н и к а , в х о д я щ и е в в е р ш и н у Л , ,
л е ж а т по р а з н ы е с т о р о н ы о т р е з к а ( р и с . 19, б). Ч и с л о
п е р е с е ч е н и й п р и м е м р а в н ы м 1.
Д л я п р о в е р к и , по р а з н ы е или по о д н у с т о р о н у от
прямой л е ж а т стороны многоугольника, можно использо
в а т ь а л г о р и т м (1.3).
Е с л и о т р е з о к п р о х о д и т по с т о р о н е , то ч и с л о п е р е с е ч е
ний б у д е м с ч и т а т ь р а в н ы м 2.
5.2. В з а и м н о е р а с п о л о ж е н и е многоугольников
Рис. 20
26
ное р а с п о л о ж е н и е сторон многоугольников. Если д в е сто
роны разных многоугольников пересекаются, то и много
угольники пересекаются. П о э т о м у д л я определения воз
можного пересечения сторон многоугольников можно вос
пользоваться алгоритмом (1.4). Если найдется пара сто
рон из разных многоугольников, которые пересекаются,
то взаимное положение многоугольников о п р е д е л е н о .
Если оказалось, что в многоугольниках нет в з а и м н о
пересекающихся сторон, то переходим ко второму этапу.
Второй э т а п . Устанавливаем взаимное р а с п о л о ж е н и е
вершины одного из многоугольников и другого многоуголь
ника. Если оказалось, что вершина одного из многоуголь
ников л е ж и т внутри д р у г о г о многоугольника, то один из
многоугольников л е ж и т внутри другого. Следовательно,
взаимное р а с п о л о ж е н и е многоугольников установлено.
Пусть д л я к а ж д о г о из многоугольников его вершина
л е ж и т вне другого многоугольника. В этом с л у ч а е оста
ется единственно в о з м о ж н о е решение: к а ж д ы й много
угольник л е ж и т вне другого.
Вопросы д л я повторения
1. Как о п р е д е л и т ь в з а и м н о е р а с п о л о ж е н и е м н о г о у г о л ь н и к а и
точки?
2. З а в и с и т ли с п о с о б о п р е д е л е н и я в з а и м н о г о р а с п о л о ж е н и я
многоугольника и точки от выпуклости многоугольника?
3. Н а з о в и т е в о з м о ж н ы е р а с п о л о ж е н и я д в у х т р е у г о л ь н и к о в .
(xi; Uil
4. Найти взаимное р а с п о л о ж е н и е двух о к р у ж н о с т е й
27
р а д и у с а R и R с ц е н т р а м и в т о ч к а х (х ; у ) и (х ,
x 2 у) х х 2 2
соответственно.
5. Н а й т и в з а и м н о е р а с п о л о ж е н и е о к р у ж н о с т и р а д и у
са R с ц е н т р о м в т о ч к е (х ; у ) и п р я м о й , п р о х о д я щ е й 0 0
ч е р е з точки с к о о р д и н а т а м и (х ; у ) и (х ; у ). х х 2 2
6. О п р е д е л и т ь к о л и ч е с т в о т о ч е к с ц е л о ч и с л е н н ы м и
координатами, л е ж а щ и х внутри окружности радиуса
R с ц е н т р о м в т о ч к е ( j c ; у ). 0 0
7. Н а й т и к о о р д и н а т ы т о ч е к п е р е с е ч е н и я д в у х о к р у ж
ностей р а д и у с о в R и R с ц е н т р а м и в т о ч к а х (х ; у ) и
x 2 х х
(х ; у ) соответственно.
2 2
8. Н а й т и к о о р д и н а т ы т о ч к и , с и м м е т р и ч н о й д а н н о й
т о ч к е М с к о о р д и н а т а м и (х ; у ) о т н о с и т е л ь н о п р я м о й х х
Ах + Ву + С = 0.
9. Д а н ы д в е т о ч к и М (х ; у ), М (х ; у) и прямая х х х 2 2 2
(х , г/ ), к о т о р ы е я в л я ю т с я в е р ш и н а м и н е к о т о р о г о п р я м о
3 3
четырехугольник.
12. Д а н ы координаты вершин четырехугольника
(х ; у ), (х , у ), (х ; у ), (х ; у ). О п р е д е л и т ь , я в л я е т с я л и
х х 2 2 3 3 4 4
ч е т ы р е х у г о л ь н и к : а ) р о м б о м ; б ) к в а д р а т о м ; в) т р а п е ц и е й .
13. Д а н ы к о о р д и н а т ы д в у х в е р ш и н (х ;,у ) и (х ; у) х х 2 2
н е к о т о р о г о к в а д р а т а , р а с п о л о ж е н н ы х по д и а г о н а л и ,
и т о ч к а {х \ у ). О п р е д е л и т ь , л е ж и т л и т о ч к а в н у т р и
3 3
квадрата.
15. Д а н ы к о о р д и н а т ы (х ; у ), (х ; у ), (х ; у ) в е р ш и н х х 2 2 3 3
т р е у г о л ь н и к а . Н а й т и к о о р д и н а т ы точки п е р е с е ч е н и я его
медиан.
28
16. Д а н ы к о о р д и н а т ы (х ; у ), (х \ у ), (х ; ) в е р ш и н
{ х 2 2 3 Уг
т р е у г о л ь н и к а . Н а й т и д л и н ы его в ы с о т .
17. О п р е д е л и т ь к о э ф ф и ц и е н т ы у р а в н е н и я п р я м о й , п а
раллельной данной прямой, определяемой уравнением
Ах-\-Ву-\-С — 0 и проходящей через точку с координата
ми (лу, г/ ). 0
18. О п р е д е л и т ь к о э ф ф и ц и е н т ы у р а в н е н и я п р я м о й ,
перпендикулярной данной прямой, определяемой уравне
нием Ах-\-Ву-\-С — 0 и проходящей через точку с коор
д и н а т а м и (д: ; у ).
0 0
1. О п р е д е л и т ь , п е р е с е к а ю т с я л и п р я м а я y = kx-\-h
и о т р е з о к с к о н ц а м и (*,; «/,), (х , 2 у ). 2
2. О п р е д е л и т ь , п р и н а д л е ж и т л и т о ч к а А (х; у) о т р е з к у
с к о н ц е в ы м и т о ч к а м и В{х{, у ) и С(х ;
х 2у ). 2
3. а) В ы п у к л ы й многоугольник з а д а е т с я координата
м и своих в е р ш и н п р и его о б х о д е по ч а с о в о й и л и п р о т и в
ч а с о в о й с т р е л к и . К о н т у р м н о г о у г о л ь н и к а не и м е е т с а м о
пересечений. Определить н а п р а в л е н и е обхода.
б) Определить н а п р а в л е н и е обхода в случае невы
пуклого многоугольника.
4. Н а п л о с к о с т и з а д а н ы п о т р е з к о в к о о р д и н а т а м и
к о н ц е в ы х точек. К о н ц ы о т р е з к о в з а д а ю т с я д в у м я п а р а м и
к о о р д и н а т (jC[ [t]; УуЩ), (x [i\, y [i]), 1 < л ^ л ( к о н ц ы п р и
2 2
29
м н о г о у г о л ь н и к , что к а ж д а я т о ч к а п р и н а д л е ж и т некото
рой с т о р о н е .
7. N т о ч е к на п л о с к о с т и з а д а н ы с в о и м и к о о р д и н а т а
ми. Н а й т и п о р я д о к , в к о т о р о м м о ж н о с о е д и н и т ь эти
точки, чтобы получился N-угольник.
8. П р е д с т а в ь т е с е б е , что в т е т р а д к е В ы з а к р а с и л и на
листе какое-то количество клеточек и получили кле
т о ч н у ю ф и г у р у . С к о л ь к о осей с и м м е т р и и и м е е т з а д а н н а я
клеточная фигура?
З а д а н ы : N —размер
( ф и г у р ы по в е р т и к а л и , N/ —
р а з м е р ф и г у р ы по г о р и з о н т а л и ( Л ^ < 1 0 1 ; N - < 8 1 ) и с а м а
;
ф и г у р а в в и д е N с т р о к из п р о б е л о в и з в е з д о ч е к по N/
{
Ф и г у р а и м е е т 1 ось с и м м е т р и и .
П р и м е р 2.
3 5 ( р а з м е р ф и г у р ы по в е р т и к а л и и горизонтали)
* * *
* * *
Ф и г у р а и м е е т 0 осей с и м м е т р и и .
9. П р я м о у г о л ь н и к ABCD з а д а н к о о р д и н а т а м и своих
в е р ш и н . Н а п р о т и в о п о л о ж н ы х с т о р о н а х АВ и CD з а д а н ы
п о с л е д о в а т е л ь н о с т и R и R т N т о ч е к р а з б и е н и я , а на
{ 2
с т о р о н а х ВС и AD — R и R из М т о ч е к р а з б и е н и я .
3 t
Н у м е р а ц и я э л е м е н т о в п о с л е д о в а т е л ь н о с т е й /?, и R н а ч и
2
н а е т с я с о о т в е т с т в е н н о от т о ч е к А и D, a R и R — от 3 4
п о л у ч и м р а з б и е н и е Q п р я м о у г о л ь н и к а ABCD на мно
жество четырехугольников.
Найти четырехугольник разбиения Q с наибольшей
п л о щ а д ь ю при у с л о в и и , что о т р е з к и , с о е д и н я ю щ и е точки
30
р а з б и е н и й /?, и R параллельны стороне AD. П о с л е д о
2
31
X, B 2
B«
в* - c
P
2
Q
_s_ R
Ж
с,
Рис. 21
32
О 5 / 0 / 5 20 25 30
Рис. 22
в нем — п р я м о у г о л ь н и к и , о с н о в а н и я к о т о р ы х л е ж а т на
о д н о й п р я м о й ( г о р о д п о с т р о е н на р а в н и н е ) . З д а н и я з а д а
ю т с я т р о й к о й чисел (L„ H /?,), где L, и R — к о о р д и н а т ы
h t
л е в о й и п р а в о й стен з д а н и я i, а Н, — в ы с о т а э т о г о з д а
н и я . Н а р и с у н к е 22 з д а н и я о п и с ы в а ю т с я т р о й к а м и ( 0 , 1 1 ,
5), ( 2 , 6, 7), ( 3 , 13, 10), (12, 7, 16), (14, 3, 25), ( 2 0 , 18, 22),
( 2 3 , 13, 30), (24, 4, 29), а к о н т у р , п о к а з а н н ы й на р и с у н к е
2 3 , з а д а е т с я п о с л е д о в а т е л ь н о с т ь ю ( 1 , 11, 2, 13, 10, 0, 12,
7, 16, 3, 20, 18, 22, 3 , 2 3 , 13, 30, 0) (о с п о с о б е ф о р м и р о в а
н и я этой п о с л е д о в а т е л ь н о с т и с м . н и ж е ) .
0 5 /0 /5 20 25 30
Рис. 23
г о р и з о н т а л ь н у ю л и н и ю ( в ы с о т у ) , к о г д а i — четное ч и с л о ,
и вертикальную линию (хкоординату), когда i—нечет
ное. В е к т о р о ч е р т а н и я б у д е т о п р е д е л я т ь маршрут,
пройденный, к примеру, ж у к о м , н а ч а в ш и м с мини
м а л ь н о й х к о о р д и н а т ы и п у т е ш е с т в у ю щ и м по всем в е р
тикальным и горизонтальным линиям, определяющим
контур. Последний элемент в векторе линии контура
б у д е т 0.
17. Н и ж н я я л е в а я и в е р х н я я п р а в а я в е р ш и н ы п р я м о
у г о л ь н и к а А и м е ю т к о о р д и н а т ы (0; 0) и (V; W) с о о т в е т с т
венно. М н о ж е с т в о S из N т о ч е к з а д а е т с я п а р а м и к о о р д и
н а т {х{, y ), 1 < л < [ Л Л Н а й т и т а к о й п р я м о у г о л ь н и к G м а к
t
34
18. В п е р в о м к в а д р а т е к о
о р д и н а т н о й с и с т е м ы Оху н а р и / н с
с о в а н п е р в ы й к в а д р а т — ABCD,
д л и н а стороны которого р а в н а о с F
1 и вершина А находится в на- Е
о X
чале координат. Потом нарисо
ваны: второй к в а д р а т BEFC,
т р е т и й — DFGH, четвертый —
JAHI, п я т ы й — KLEJ и т а к д а
л е е по с п и р а л и ( р и с . 24). Н а п и
сать программу, которая для
в в е д е н н ы х ц е л ы х чисел х и у
Рис. 24
определяет и выводит номер
к в а д р а т а , которому принадле
ж и т т о ч к а Р(х; у). Е с л и т о ч к а Р л е ж и т на с т о р о н а х
к в а д р а т о в и л и в в е р ш и н а х , то б у д е м с ч и т а т ь , что она
п р и н а д л е ж и т к в а д р а т у с н а и м е н ь ш и м н о м е р о м из воз
можных.
X У результат
2 1 2
- 1 0 4
13 2 10
19. Н а п л о с к о с т и з а д а н ы с в о и м и к о о р д и н а т а м и N
р а з л и ч н ы х точек. Н а й т и уравнение прямой, д е л я щ е й это
м н о ж е с т в о т о ч е к на д в а п о д м н о ж е с т в а с о д и н а к о в ы м
количеством элементов.
20. Н а й т и пересечение и объединение двух в ы п у к л ы х
многоугольников. Многоугольники задаются координата
ми в е р ш и н в п о р я д к е о б х о д а по к о н т у р у .
2 1 . Я - у г о л ь н и к на п л о с к о с т и з а д а е т с я к о о р д и н а т а м и
в е р ш и н в п о р я д к е их о б х о д а по к о н т у р у . Д л я т о ч к и
Z(x; у) н а й т и м и н и м а л ь н о е р а с с т о я н и е д о к о н т у р а
iV-угольника.
22. Н а п л о с к о с т и с в о и м и к о о р д и н а т а м и з а д а ю т с я
N точек. М а т р и ц а C[l..N, I..N] з а д а е т с я с л е д у ю щ и м о б р а
з о м : Сц = Cji = 1 в с л у ч а е , если в е р ш и н ы i и / с о е д и н е н ы
35
о т р е з к о м , и 0, е с л и не с о е д и н е н ы . И з в е с т н о , что л ю б а я
в е р ш и н а с о е д и н е н а , по к р а й н е й м е р е , с д в у м я д р у г и м и
и что о т р е з к и п е р е с е к а ю т с я т о л ь к о в к о н ц е в ы х т о ч к а х .
Т а к и м о б р а з о м , в с я п л о с к о с т ь р а з б и в а е т с я на м н о ж е с т в о
м н о г о у г о л ь н и к о в . З а д а н а т о ч к а Z (х; у). Н а й т и мини
м а л ь н ы й по п л о щ а д и м н о г о у г о л ь н и к , с о д е р ж а щ и й Z,
или в ы д а т ь с о о б щ е н и е , ч т о т а к о г о н е с у щ е с т в у е т .
Е с л и Z п р и н а д л е ж и т к а к о м у - т о о т р е з к у , то в ы д а т ь его
концевые точки; если Z л е ж и т в многоугольнике, то
выдать его вершины в порядке обхода по кон
туру.
23. Б у д е м н а з ы в а т ь д в а м н о г о у г о л ь н и к а п о д о б н ы
ми, е с л и с у щ е с т в у е т в з а и м н о о д н о з н а ч н о е о т о б р а ж е н и е
сторон этих двух фигур такое, что соответствующие
стороны пропорциональны с коэффициентом пропорци
о н а л ь н о с т и k, а у г л ы , о б р а з о в а н н ы е д в у м я с о о т в е т с т в у
ющими сторонами, равны. Определить, подобны ли два
м н о г о у г о л ь н и к а . М н о г о у г о л ь н и к и з а д а ю т с я на п л о с к о
сти к о о р д и н а т а м и в е р ш и н к о н т у р о в . В е р ш и н ы в кон
т у р е п е р е ч и с л я ю т с я в п о р я д к е о б х о д а п р о т и в часовой
стрелки.
24. З а д а н ы н а т у р а л ь н о е ч и с л о N и д в е п о с л е д о в а
тельности целых чисел (а,, а , a ) и (Ь , Ъ
2 N b ). х ъ N
З а д а н ы т а к ж е д в а ч и с л а х и х,, лг <Сх . й 0 1
— t <Cti-<....
0 <Ct = x
p и указать д л я каждого отрезка
u
s <s
Q x <... <.s — x
Q и указать д л я каждого отрезка
lt
ны л е ж а т на г р а н и ц е к р у г а , а о с т а л ь н ы е — в н у т р и него.
О п р е д е л и т ь , м о ж н о ли р а з ъ е д и н и т ь д в е получившиеся
ч а с т и к р у г а ( в ы х о д из п л о с к о с т и и повороты разнимае
мых частей не допускаются).
27. Н а местности, представляющей собой идеально
р о в н у ю п о в е р х н о с т ь , стоит в ы с о к и й з а б о р . П л а н забо
ра — з а м к н у т а я л о м а н а я без самопересечений, которая
з а д а е т с я N п а р а м и к о о р д и н а т своих в е р ш и н в п о р я д к е
обхода ограничиваемой забором области против часо
вой с т р е л к и . Вершины пронумерованы от 1 до N,
N<ClOO. В т о ч к е (х; у) с т о и т ч е л о в е к ((г, у) не м о ж е т
л е ж а т ь на л о м а н о й ) . С ч и т а я , чго к а ж д о м у з в е н у Ломаной
ставится в соответствие пара номеров концевых вер
шин, указать, какие звенья человек увидит полностью
или ч а с т и ч н о , а к а к и е — в о о б щ е не у в и д и т . Е с л и при
в з г л я д е з в е н о в и д н о к а к т о ч к а или к а к п а р а т о ч е к , то
п о л а г а е м , что оно не в и д н о .
28. На гранях двух равных правильных тетраэд
ров N и М написаны числа N b N, 2 N,
3 N4 и M u М,
2
37
ЗАДАЧИ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
1. З а д а н ы с т о р о н ы А и В д в у х к в а д р а т о в , р а с п о л о
ж е н н ы х т а к , к а к п о к а з а н о на р и с у н к е 25 ( в е р т и к а л ь н ы е
оси с и м м е т р и и у к в а д р а т о в с о в п а д а ю т ) . О п р е д е л и т ь угол
а, под к о т о р ы м ш а р и к н а д о в ы п у с т и т ь из точки А, ч т о б ы
он п о п а л в т о ч к у В з а м и н и м а л ь н о е к о л и ч е с т в о о т р а
жений.
2. Д в а Л/'-угольника на п л о с к о с т и з а д а ю т с я к о о р д и
н а т а м и в е р ш и н в п о р я д к е их о б х о д а по к о н т у р а м . Н а й т и
м и н и м а л ь н о е р а с с т о я н и е м е ж д у э т и м и А/-угольниками.
3 . N т о ч е к на п л о с к о с т и з а д а н ы с в о и м и к о о р д и н а т а
ми. Н а й т и п о р я д о к , в к о т о р о м м о ж н о с о е д и н и т ь эти
точки, чтобы получилась л о м а н а я без самопересечений.
4. Н а п л о с к о с т и з а д а н о N т о ч е к с к о о р д и н а т а м и
(хй */,)> (х ; у ),
2 2 (х ; у ). Н а й т и т а к у ю т о ч к у Z(х;
п п у),
с у м м а расстояний от которой до о с т а л ь н ы х м и н и м а л ь н а и:
а ) Z — о д н а из з а д а н н ы х точек;
б) Z — п р о и з в о л ь н а я т о ч к а п л о с к о с т и .
5. Н а п л о с к о с т и з а д а н о м н о ж е с т в о т о ч е к А и мно
ж е с т в о п р я м ы х В. Н а й т и д в е т а к и е р а з л и ч н ы е точки из
А, что п р о х о д я щ а я ч е р е з них п р я м а я п а р а л л е л ь н а н а и
б о л ь ш е м у к о л и ч е с т в у п р я м ы х из В.
6. С р е д и т р е у г о л ь н и к о в с в е р ш и н а м и в з а д а н н о м
м н о ж е с т в е точек на п л о с к о с т и у к а з а т ь т а к о й , с т о р о н ы
которого с о д е р ж а т м а к с и м а л ь н о е число точек заданного
множества.
7. В с е с т е н ы д о м а и м е ю т д л и
ну 5 м. С е в е р н а я и ю ж н а я с т о р о
н ы — б е л ы е , з а п а д н а я и восточ
н а я — с и н и е . Ч е л о в е к .прошел от
ю г о - в о с т о ч н о г о у г л а д о м а А мет
р о в на юг, В м е т р о в на восток
О и С м е т р о в на с е в е р и посмот
b
р е л на д о м . Н а п и с а т ь а л г о р и т м ,
который определяет, к а к и е стены
увидит человек.
А В 8. Н а с т о л е л е ж и т и г р а л ь н ы й
кубик гранью А к нам, гранью
0
9. Н а п л о с к о с т и з а д а н ы к о о р д и н а т ы в е р ш и н д в у х
т р е у г о л ь н и к о в . Т р е б у е т с я н а й т и х о т я б ы одну п р я м у ю ,
р а з б и в а ю щ у ю к а ж д ы й из э т и х т р е у г о л ь н и к о в на д в е
р а в н о в е л и к и е ч а с т и . Р е з у л ь т а т д о л ж е н в ы в о д и т ь с я на
э к р а н в в и д е у р а в н е н и я y — kx-\-b. Е с л и и с к о м а я п р я м а я
п а р а л л е л ь н а оси Оу, то у р а в н е н и е д о л ж н о б ы т ь п р и в е д е
но в в и д е х = А. К о э ф ф и ц и е н т ы Л , В, k д о л ж н ы б ы т ь
п р и в е д е н ы не м е н е е чем с ч е т ы р ь м я з н а к а м и п о с л е
десятичной точки.
10. Д а н ы ч и с л а (*,; у ), ( х ; у ), (х \ у )—
у 2 2 координаты
3 3
(х , у ),
2 2 (%; y ), я в л я ю щ и е с я с е р е д и н а м и п о с л е д о в а
N
т е л ь н ы х с т о р о н JV-угольника. В о с с т а н о в и т ь по э т и м точ
к а м исходный iV-угольник. П о д м н о г о у г о л ь н и к о м в д а н
ной з а д а ч е п о н и м а е т с я к а к а я угодно ( в о з м о ж н о с а м о п е
ресекающаяся) замкнутая ломаная.
39
П р и м е ч а н и е . N — нечетное, JV>1 и N < 2 0 , xt, j/ — веще y
УКАЗАНИЯ К Р Е Ш Е Н И Ю ЗАДАЧ
ПОВЫШЕННОЙ СЛОЖНОСТИ
1. Вариант 1. М о ж н о ч е р е з к о н ц ы о т р е з к а провести
п р я м у ю y — cx-\-d и о п р е д е л и т ь , п р и н а д л е ж и т л и т о ч к а
п е р е с е ч е н и я д в у х п р я м ы х , если о н а с у щ е с т в у е т , о т р е з к у ,
т. е. мы д о л ж н ы р е ш и т ь у р а в н е н и е х(с — k) = (b — d),
н а й т и y — kx-\-b и проверить выполнение неравенств
х ^.х^х ,
1 2 У\^У^у - 2 Н о при н а х о ж д е н и и (х; у) в р е з у л ь
т а т е д е л е н и я могут в о з н и к н у т ь б о л ь ш и е в ы ч и с л и т е л ь н ы е
п о г р е ш н о с т и или д а ж е п е р е п о л н е н и е или п о т е р я з н а ч и
мости, в р е з у л ь т а т е чего п о л у ч и т с я н е в е р н ы й ответ.
Вариант 2. О б о з н а ч и м F(х\ y) = kx-\-b — y. П р я м а я
kx-\-b — y р а з б и в а е т п л о с к о с т ь на т р и ч а с т и : в одной
F (х; у)>0, в д р у г о й F (х\ г / ) < 0 , и на п р я м о й kx-\-b — y
в ы п о л н я е т с я F (ж; у) = 0. Е с л и п р я м а я y = kx-\-b пересе
к а е т о т р е з о к , то л и б о к о н ц ы о т р е з к а л е ж а т в р а з л и ч н ы х
п о л у п л о с к о с т я х , л и б о хотя б ы о д н а к о н ц е в а я т о ч к а от
р е з к а л е ж и т на п р я м о й . Э т о р а в н о с и л ь н о в ы п о л н е н и ю
н е р а в е н с т в а F(x ;
{ y )F(x ,
{ 2 2у )^.0. Т а к и м о б р а з о м , не
в ы ч и с л я я т о ч к у п е р е с е ч е н и я , м ы по з н а к у п р о и з в е д е н и я
можем определить, имеют ли п р я м а я и отрезок общую
точку. О ч е в и д н о , что второй в а р и а н т р е ш е н и я з а д а ч и
предпочтительнее первого.
2. Точки о т р е з к а Z м о ж н о о п и с а т ь у р а в н е н и е м
где р — ч и с л о ( O ^ p ^ l ) , OB и ОС — в е к т о р ы .
40
Е с л и с у щ е с т в у е т т а к о е ч и с л о р ( O ^ p ^ l ) , что
р • OB-f-( 1 — р)-ОС — А, т о А, л е ж и т на о т р е з к е , и н а ч е —
нет.
Р а в е н с т в о (*) р а с п и с ы в а е т с я п о к о о р д и н а т н о т а к :
рх + (1—р)х
1 2 = х,
ру + (1—р)у
1 2 = у.
И з п е р в о г о у р а в н е н и я н а х о д и м р, п о д с т а в л я е м во второе;
е с л и п о л у ч а е м р а в е н с т в о и O ^ p ^ l , то А л е ж и т на
о т р е з к е , и н а ч е — нет.
3 . Н а й д е м к а к у ю - н и б у д ь в н у т р е н н ю ю т о ч к у А (х; у)
в ы п у к л о г о м н о г о у г о л ь н и к а , н а п р и м е р т о ч к у А (х; у) с к о
о р д и н а т а м и ((х + х + х )/3; (у + у + у )/3).
1 2 3 х 2 Т а к а я точка
л
Е с л и п е р в ы й у г о л м е н ь ш е в т о р о г о , т о обход п р о т и в
ч а с о в о й с т р е л к и , и н а ч е — по ч а с о в о й .
М о ж н о р е ш а т ь з а д а ч у и другим способом, который
применим и в случае невыпуклой фигуры. В н а ч а л е най
д е м н о м е р в е р ш и н ы , и м е ю щ е й м и н и м а л ь н у ю г/-координа-
ту ( п у с т ь ее к о о р д и н а т ы (х ; у )).
0 Е с л и т а к и х точек
тю
н е с к о л ь к о , т о б е р е м ту, у к о т о р о й х - к о о р д и н а т а мини
м а л ь н а (т. е. с а м у ю л е в у ю ) . П о с л е этого мы з н а е м к о о р
д и н а т ы д в у х точек, о д н а из к о т о р ы х п р е д ш е с т в у е т в з а
д а н н о м обходе найденной точке, а д р у г а я — следует за
ней. П у с т ь их к о о р д и н а т ы (х ; у ) и (x ; y ) с о о т в е т с т в е н
р р s s
но. Е с л и
Ур ^min У* ^min
Л1( -*0?
х
Р + (Ур-У т? т Л1( *-Х ? + (У*-Утт?
х
0 '
то о б х о д по ч а с о в о й с т р е л к е , и н а ч е — п р о т и в ( з н а ч е н и я
дробей соответствуют косинусам углов, которые образу
ют с о о т в е т с т в у ю щ и е с т о р о н ы м н о г о у г о л ь н и к а с п р я м о й ,
о п р е д е л я е м о й у р а в н е н и е м y = y „. А т а к к а к э т о т угол
mi
41
л е ж и т в п р е д е л а х от 0° д о 180°, то м е н ь ш е м у у г л у со
ответствует большее значение косинуса).
4. П р е д п о л о ж и м , мы н а ш л и т а к у ю п р я м у ю . Б у д е м
с д в и г а т ь ее в н а п р а в л е н и и , п е р п е н д и к у л я р н о м этой п р я
мой ( п а р а л л е л ь н ы й п е р е н о с ) до тех п о р , пока она не
п е р е с е ч е т к а к у ю - н и б у д ь из к о н ц е в ы х т о ч е к о т р е з к а . З а
счет п о в о р о т а п р я м о й в о к р у г этой т о ч к и м ы м о ж е м
д о б и т ь с я того, что п р я м а я б у д е т п р о х о д и т ь ч е р е з 2 кон
ц е в ы е точки о т р е з к о в и не п е р е с т а н е т б ы т ь р е ш е н и е м
з а д а ч и . Следовательно, мы д о л ж н ы рассмотреть п р я м ы е ,
п р о х о д я щ и е ч е р е з в с е в о з м о ж н ы е к о м б и н а ц и и п а р кон
ц е в ы х т о ч е к о т р е з к о в . В с е г о н а д о п р о в е р и т ь (2N— 1) +
+ (2iV— 2) + . . . -f- 1 =N(2N— 1) п р я м ы х и д л я к а ж д о й из
них н а й т и ч и с л о п е р е с е ч е н и й с о т р е з к а м и . Та п р я м а я ,
у к о т о р о й это ч и с л о м а к с и м а л ь н о е , и е с т ь и с к о м а я .
При решении возникает подзадача пересечения пря
мой ax-\-by-\-c = 0 и о т р е з к а с к о н ц а м и (*,; г/,), (х ; 2 у ).
2
( С м . а л г о р и т м 1.3.)
5. С т р о и м в ы п у к л у ю о б о л о ч к у д а н н о г о м н о ж е с т в а
точек, т. е. т а к о й в ы п у к л ы й м н о г о у г о л ь н и к , в е р ш и н а м и
к о т о р о г о я в л я ю т с я н е к о т о р ы е из э т и х N т о ч е к ( в о з м о ж н о ,
не в с е ) . Ч е р е з к а к о е б ы р е б р о э т о г о м н о г о у г о л ь н и к а м ы
не п р о в е л и п р я м у ю , все N т о ч е к исходного м н о ж е с т в а
б у д у т л е ж а т ь по одну с т о р о н у от этой п р я м о й и на ней
(определение местоположения точек относительно пря
мой — с м . а л г о р и т м 1.3).
И з п р о и з в о л ь н о й т о ч к и а м н о ж е с т в а А из N точек м ы
{
м о ж е м п р о в е с т и не б о л е е (N — 1)-го о т р е з к а т а к , ч т о б ы
и в т о р а я к о н ц е в а я т о ч к а этого о т р е з к а б ы л а из м н о ж е
с т в а А. Б е р е м тот о т р е з о к [а,; а ] , д л я к о т о р о г о все т о ч к и
2
м н о ж е с т в а А л е ж а т по одну с т о р о н у от п р я м о й , п р о х о д я
щ е й ч е р е з этот о т р е з о к ( е с л и ни один о т р е з о к не у д о в л е т
в о р я е т э т о м у у с л о в и ю , то б е р е м д р у г о е а,; с с а м о г о
н а ч а л а л у ч ш е всего в з я т ь в к а ч е с т в е а т о ч к у с м а к с и
{
м а л ь н о й а б с ц и с с о й , а е с л и т а к и х н е с к о л ь к о , т о с р е д и них
б е р е м т о ч к у с м а к с и м а л ь н о й о р д и н а т о й — это г а р а н т и
р у е т , что O j п р и н а д л е ж и т и с к о м о м у к о н т у р у в ы п у к л о г о
42
м н о г о у г о л ь н и к а ) . Д л я точки а и щ е м т о ч к у а Фа
2 3 1 так,
ч т о б ы все м н о ж е с т в о А л е ж а л о по одну с т о р о н у от
п р я м о й , о п р е д е л я е м о й о т р е з к о м [а ; а ] ,
2 3 д л я точки а,
и щ е м т о ч к у а фа _
1+1 1 1 т а к , ч т о б ы все точки А л е ж а л и по
о д н у с т о р о н у от п р я м о й , с о д е р ж а щ е й о т р е з о к [а a ],
ь i+l
и т. д., до тех п о р , п о к а о ч е р е д н о й т о ч к о й a i + 1 не с т а н е т
а — мы з а м к н у л и контур и нашли выпуклую оболочку.
и
В с е т о ч к и м н о ж е с т в а Л , не л е ж а щ и е на к о н т у р е ,
л е ж а т внутри выпуклой оболочки.
6. П р е д п о л о ж и м , что м ы п о с т р о и л и и с к о м ы й в ы п у к
л ы й многоугольник. Если к а к а я - т о точка а (из данного
в у с л о в и и м н о ж е с т в а S из k т о ч е к ) л е ж и т на с т о р о н е
м н о г о у г о л ь н и к а , то с ч и т а е м ее новой в е р ш и н о й этого
м н о г о у г о л ь н и к а . М о ж е м с ч и т а т ь , что все в е р ш и н ы д а н
ного м н о г о у г о л ь н и к а е с т ь т о ч к и м н о ж е с т в а S ( е с л и это
не т а к и м е ж д у д в у м я т о ч к а м и а и b из S л е ж и т о д н а или
н е с к о л ь к о « п о с т о р о н н и х » в е р ш и н , то м ы м о ж е м их о т б р о
с и т ь и с ч и т а т ь , что а и b — д в е п о с л е д о в а т е л ь н ы е в е р ш и
ны к о н т у р а . М н о г о у г о л ь н и к при э т о м у н а с о с т а е т с я
в ы п у к л ы м ( о т р е з о к [а; Ь] д е л и т ф и г у р у на д в а в ы п у к л ы х
м н о г о у г о л ь н и к а ) , а т а к к а к на к о н т у р е м е ж д у а и b не
л е ж а л о ни одной точки из 5 , то п о л у ч е н н ы й м н о г о у г о л ь
ник у д о в л е т в о р я е т т р е б о в а н и я м з а д а ч и ) .
И т а к , в качестве решения з а д а ч и мы получили вы
п у к л у ю о б о л о ч к у м н о ж е с т в а S (о п о с т р о е н и и ее с м . з а
д а ч у 5).
Е с л и п о с т р о е н н а я в ы п у к л а я о б о л о ч к а т а к о в а , что
к а ж д а я т о ч к а S я в л я е т с я ее в е р ш и н о й ( и л и л е ж и т на
с т о р о н е ) , то з а д а ч а р е ш е н а , и н а ч е — р е ш е н и я не с у щ е
:
ствует.
7. Р а с с м о т р и м д в а из в о з м о ж н ы х а л г о р и т м о в .
Вариант 1. С т р о и м в ы п у к л у ю о б о л о ч к у д а н н о г о м н о
ж е с т в а т о ч е к (см. з а д а ч у 5).
Е с л и все т о ч к и м н о ж е с т в а Л л е ж а т на к о н т у р е , то
з а д а ч а р е ш е н а . Е с л и ж е нет, то и щ е м точку р с м и н и
м а л ь н ы м р а с с т о я н и е м до к о н т у р а ( е с л и т а к и х т о ч е к
н е с к о л ь к о , то б е р е м л ю б у ю из них). П у с т ь м и н и м а л ь н о е
р а с с т о я н и е до к о н т у р а е с т ь р а с с т о я н и е д о с т о р о н ы (и; v).
43
В с т а в л я е м в к о н т у р точку р: в м е с т о к о н т у р а . . . и, v, ....
б у д е т к о н т у р ... и, р, v, ... .
Д л я оставшихся точек повторяем описанную выше
п р о ц е д у р у , п о к а все т о ч к и не б у д у т в с т а в л е н ы в к о н т у р .
Р а с с т о я н и е от т о ч к и до с т о р о н ы — это л и б о д л и н а
п е р п е н д и к у л я р а , о п у щ е н н о г о из точки на сторону, е с л и
п р о е к ц и я т о ч к и п о п а д а е т на о т р е з о к , л и б о м и н и м а л ь н о е
из р а с с т о я н и й от т о ч к и д о к о н ц е в ы х т о ч е к с т о р о н ы .
Р а с с т о я н и е от точки z(u; v) до ее п р о е к ц и и на п р я м у ю
T
Ах + Ву + С = 0 е с т ь d^\Au +Bv + C\/'^A +¥.
Вариант 2. С т р о и м в ы п у к л у ю о б о л о ч к у V д а н н о г о
м н о ж е с т в а точек.
Е с л и все точки м н о ж е с т в а А л е ж а т на к о н т у р е , то
з а д а ч а решена. И н а ч е , обозначим через А все внутрен х
пересекаются!).
«Склеиваем» два контура следующим образом.
В ы б е р е м по п а р е п о с л е д о в а т е л ь н ы х в е р ш и н р, s и р ь
ем к о н т у р ы V и V, ( у б и р а я р е б р а ( р ; s) и (р ; s,)) и о б ъ
х
е д и н я е м их ( д о б а в л я я р е б р а ( р ; р , ) и (s; s )). x
Е с л и в н у т р и V нет в н у т р е н н и х точек, то з а д а ч а
{
ем т е ж е с а м ы е о п е р а ц и и : н а х о д и м в ы п у к л у ю о б о л о ч к у
и п а р ы п о с л е д о в а т е л ь н ы х т о ч е к на к о н т у р а х , р а з р ы в а е м
и « с к л е и в а е м » к о н т у р ы и т. д., п о к а не п о л у ч и м , что по
с л е д н я я построенная в ы п у к л а я оболочка содержит в се
бе 0, 1 и л и 2 т о ч к и .
Е с л и т о ч е к 0, то з а д а ч а р е ш е н а . В п р о т и в н о м с л у ч а е
присоединяем точки к ранее образованному контуру так,
чтобы фигура о с т а л а с ь многоугольником (можно прово
д и т ь п р и с о е д и н е н и е , к а к и в в а р и а н т е 1).
8. У к л е т о ч н о й ф и г у р ы м о г у т б ы т ь с л е д у ю щ и е оси
симметрии — горизонтальная, вертикальная и идущие
44
под у г л о м 45° и 135° (т. е. 4 оси с и м м е т р и и , к а к у к в а д
р а т а ) . Оси могут проходить к а к через центр какой-то
к л е т к и , т а к и по с т о р о н е . Н а п р и м е р , ф и г у р ы
и м е ю т по 2 оси с и м м е т р и и — г о р и з о н т а л ь н у ю и в е р т и
к а л ь н у ю , а ф и г у р а * — все 4 оси с и м м е т р и и .
В в е д е м с и с т е м у к о о р д и н а т т а к и м о б р а з о м , что к а ж
д а я з а р и с о в а н н а я к л е т к а п р е д с т а в л я е т с я точкой с ц е л о
численными координатами.
Находим возможный центр симметрии фигуры, имею
щий к о о р д и н а т ы ((x „ + x )/2;
m mln (у
тах +у )/2),
тт где х , тзх
#max> * m i n и
Утт соответственно м а к с и м а л ь н ы е и мини
мальные иксовые и игрековые координаты точек в з а д а н
ной н а м и с и с т е м е к о о р д и н а т :
п а р а л л е л ь н ы с т о р о н е AD. Б у д е м б р а т ь о т р е з к и , с о е д и н я
ю щ и е п о с л е д о в а т е л ь н ы е т о ч к и р а з б и е н и й R и R и ис
3 it
Если f — f = g — gb то 2 l 2
что то ж е , R ). 2
д л и н ы л е в о й и п р а в о й сторон ч е т ы р е х у г о л ь н и к а , L— 2
л е в о й и п р а в о й с т е н о к п р я м о у г о л ь н и к а ABCD д о четы
р е х у г о л ь н и к а , х — р а с с т о я н и е от точки Z д о п р я м о
у г о л ь н и к а ABCD, S — п л о щ а д ь ч е т ы р е х у г о л ь н и к а . П о л у
чим с л е д у ю щ у ю с х е м у ( р и с . 2 6 ) и р а в е н с т в а :
х _ х+р.
Л2 А, '
S = (h' + h")L /2; 2
х x+ L _ 3 x+ L +L2 3
h" ~~ h'
Откуда
x = ph /{h — h );
2 x 2
h" = h (x + L )/x.
2 3
46
Д л я каждой пары отрезков, определяемых точками
разбиений /? и R , находим м а к с и м а л ь н у ю п л о щ а д ь
3 4
( е с л и это не т а к , то п р о с т о о т с о р т и р у е м п р е д в а р и т е л ь н о
последовательность).
Вариант 1. П р е д п о л о ж и м , что мы н а ш л и т о ч к у Z с ко
о р д и н а т о й х и она л е ж и т на и н т е р в а л е (х ; x ).
0 Справа ; i+l
будет такой:
с о д н о й из т о ч е к х и с с л е д у е т с я т а к ж е , с и с п о л ь з о в а н и
ь
ем м а л е н ь к и х с д в и г о в .
С л е д о в а т е л ь н о , д л я того ч т с б ы т о ч к а Z б ы л а и с к о
мой, н е о б х о д и м о и д о с т а т о ч н о , чтобы с п р а в а и с л е в а от
нее л е ж а л о одно и то ж е ч и с л о точек. Е с л и N = 2k, то
т о ч к а Z м о ж е т б ы т ь л ю б о й из т о ч е к о т р е з к а [х \ х ], к к+1
е с л и ж е N — 2k-\-l, то т о ч к а Z и м е е т к о о р д и н а т у х . 4 + 1
Вариант 2. П у с т ь мы р е ш а е м з а д а ч у д л я N точек на
прямой.
Т о ч к а Z д о л ж н а , о ч е в и д н о , л е ж а т ь на о т р е з к е [х^, х ]. м
Е с л и N=1, то д а н н а я т о ч к а и я в л я е т с я и с к о м о й .
Е с л и N = 2, то Z м о ж е т л е ж а т ь г д е у г о д н о на о т р е з к е
[х ; x ] — с у м м а р н о е р а с с т о я н и е б у д е т о д и н а к о в ы м и р а в
х N
47
Е с л и A f > 2 , то с у м м а р н о е р а с с т о я н и е от точки Z до
точек с минимальной и максимальной координатами
(т. е. до т о ч е к х и x ) не з а в и с и т от м е с т о п о л о ж е н и я
х N
т о ч к и Z и р а в н о д л и н е о т р е з к а [х{, %].
Т а к к а к с у м м а р н о е р а с с т о я н и е до э т и х д в у х т о ч е к
п о с т о я н н о , то п о э т о м у м ы их м о ж е м не р а с с м а т р и в а т ь
и р е ш а т ь д а л е е з а д а ч у у ж е д л я (N — 2) т о ч е к х ъ x _. N t
48
но с д в и н у т ь ц е н т р , у м е н ь ш и в при э т о м р а д и у с о к р у ж н о
с т и , с о д е р ж а щ е й все т о ч к и . П о л у ч а е м п р о т и в о р е ч и е
с предположением о минимальности радиуса.
Следствие. Е с л и на и с к о м о й о к р у ж н о с т и л е ж и т т о л ь
ко о д н а т о ч к а , то это т о ч к а с м а к с и м а л ь н о й по м о д у л ю
ординатой.
О т м е т и м , что о к р у ж н о с т ь с ц е н т р о м на оси а б с ц и с с
единственным образом определяется двумя л е ж а щ и м и
на ней т о ч к а м и ( ц е н т р этой о к р у ж н о с т и — э т о т о ч к а
п е р е с е ч е н и я оси а б с ц и с с и с е р е д и н н о г о п е р п е н д и к у л я р а
к о т р е з к у , с о е д и н я ю щ е г о эти д в е т о ч к и ) .
Вариант 1.
Ш а г 1. И щ е м т о ч к у (х{, y ) с м а к с и м а л ь н о й по м о д у
t
л ю о р д и н а т о й у ( е с л и т а к и х т о ч е к н е с к о л ь к о и у них
{
р а з н ы е а б с ц и с с ы , то п е р е й т и на Ш а г 2) и д л я о к р у ж н о
сти С (xf, (х{у yi)) п р о в е р я е м , с о д е р ж и т л и она в с е N точек.
Е с л и д а , то з а д а ч а р е ш е н а , е с л и нет, то п е р е х о д и м
к Ш а г у 2.
Ш а г 2. С р е д и о к р у ж н о с т е й , о п р е д е л я е м ы х в с е в о з
м о ж н ы м и п а р а м и т о ч е к (Р ; Р ) , н а х о д и м т е , к о т о р ы е
{ ;
с о д е р ж а т в с е т о ч к и , а з а т е м в ы б и р а е м из них о к р у ж
ность минимального радиуса.
П а р точек, которые могут определять окружности,
в с е г о N (N —1)/2, т. е. п о р я д к а N , с л е д о в а т е л ь н о , и в о з
2
а л г о р и т м а , то р а с с м а т р и в а е м т о л ь к о з а в и с и м о с т ь р о с т а
ч и с л а т р е б у е м ы х о п е р а ц и й от ч и с л а N, игнорируя
все константные множители и медленно растущие слага
е м ы е . ) Р а с с м о т р и м д р у г о й с п о с о б р е ш е н и я этой з а д а ч и ,
о с н о в а н н ы й на б о л е е г л у б о к о м е е а н а л и з е .
Вариант 2.
П р о в е р к а по Ш а г у 1 р а н е е и з л о ж е н н о г о а л г о р и т м а
о с т а е т с я б е з и з м е н е н и я . П у с т ь и с к о м а я о к р у ж н о с т ь не
найдена. Д л я обоснования Ш а г а 2 докажем следующее
утверждение:
49
П у с т ь о к р у ж н о с т ь с ц е н т р о м (Рф, 0 ) о п р е д е л я е т с я
т о ч к а м и Pi(x{, y ) и Pj(xf, у,). О н а т о л ь к о т о г д а м о ж е т
t
б ы т ь с о д е р ж а щ е й все т о ч к и о к р у ж н о с т ь ю С м и н и м а л ь н о
го р а д и у с а , к о г д а (Рф, 0 ) л е ж и т н а о р т о г о н а л ь н о й п р о
е к ц и и о т р е з к а [(хц y ); (хц y )] н а о с ь а б с ц и с с , т. е. д о л ж
t t
ны в ы п о л н я т ь с я н е р а в е н с т в а х^Рц^х^
О к р у ж н о с т ь С с ц е н т р о м (Рф, 0 ) д о л ж н а п р о х о д и т ь не
менее ч е м ч е р е з д в е т о ч к и з а д а н н о г о м н о ж е с т в а из
N точек, и п р и э т о м из исходных т о ч е к в с е г д а м о ж н о
в ы б р а т ь д в е т а к и е ( о б о з н а ч и м их Р (хц y ) и Pj(xf,
{ v y )),
f
50
щ а я N точек, д о л ж н а и м е т ь м а к с и м а л ь н ы й из всех
п о л у ч е н н ы х р а д и у с о в /?,,.
В с е г о п а р т о ч е к {Р{, Я,) не б о л е е (N — N)/2, и, с л е д о
2
В о т л и ч и е от в а р и а н т а 2 м ы не б у д е м б р а т ь в с е
п е р п е н д и к у л я р ы , п о п а д а ю щ и е на п р о е к ц и и о т р е з к о в ,
и искать среди получаемых окружностей окружность
с максимальным радиусом. Наоборот, описанным ниже
с п о с о б о м б у д е м в ы б и р а т ь точку на оси а б с ц и с с и п р о в е
р я т ь , я в л я е т с я л и о н а и с к о м о й и л и нет.
И з в а р и а н т а р е ш е н и я 2 м о ж н о с д е л а т ь в ы в о д , что
и с к о м а я т о ч к а л е ж и т на о т р е з к е [Л , fi ] = [ m i n {х,}, 0 0
к а , a L — B — А — его д л и н а .
0 0
Обозначим:
Dl(C )—0 м а к с и м а л ь н о е из р а с с т о я н и й от точки ( С ; 0) 0
д о т о ч е к (х{, у ) с а б с ц и с с а м и х , < ; С ;
{ 0
Dr(C ) — м а к с и м а л ь н о е из р а с с т о я н и й от точки ( С ; 0)
0 0
О п и ш е м i-й и т е р а т и в н ы й ( п о в т о р я ю щ и й с я ) ш а г а л г о
р и т м а (i = 0, 1, . . . ) .
Е С Л И В, — Аepsilon
Т О ц е н т р о к р у ж н о с т и л е ж и т на о т р е з к е | Л ; БД и ж е л а е
(
51
ИНАЧЕ
Вычисляем C = i (A -\-Bi)/2i
Н а х о д и м Dl(Ci) и D r ( C , )
ЕСЛИ DKC^DriCt)
Т О и с к о м а я т о ч к а не м о ж е т л е ж а т ь на п р о м е ж у т к е
[А{, C ], т а к к а к р а д и у с л ю б о й с о д е р ж а щ е й N точек
t
о к р у ж н о с т и с ц е н т р о м на э т о м п р о м е ж у т к е б о л ь ш е
Dr(Cj) (проверьте сами!), а окружность с центром С ;
ИНАЧЕ
Е С Л И £)г(С,) = / ) Ц С , )
Т О С; — ц е н т р и с к о м о й о к р у ж н о с т и . Стоп
К о н е ц iro и т е р а т и в н о г о ш а г а . В ы п о л н и т ь ш а г г + 1
М ы в и д и м , что д л и н а L н а ч а л ь н о г о о т р е з к а на к а ж
д о м ш а г е у м е н ь ш а е т с я в д в о е . А л г о р и т м , в о о б щ е говоря,
заканчивает работу при выполнении условия
s
L/(2 )^epsilon.
П р и м е ч а н и е . Таким образом, требуется не более чем S =
= [log (L/epsilon)\-\-\ шагов, где log — это логарифм по основанию 2.
2 2
12. Э т о п е р е б о р н а я з а д а ч а . О б р а т и т е в н и м а н и е , что
с т о р о н ы к в а д р а т а м о г у т и не б ы т ь п а р а л л е л ь н ы о с я м
к о о р д и н а т ! К а ж д у ю из N т о ч е к м ы п о с л е д о в а т е л ь н о
р а с с м а т р и в а е м в качестве верхнего левого угла квадра
та, к а ж д у ю из оставшихся N — 1 — как нижнюю правую
в е р ш и н у и с м о т р и м , е с т ь л и д л я них в этом м н о ж е с т в е из
N точек точки, с о о т в е т с т в у ю щ и е в е р х н е м у п р а в о м у и н и ж
нему л е в о м у у г л а м . Е с л и д а , то п о д с ч и т ы в а е м , с к о л ь к о
точек л е ж и т в данном к в а д р а т е .
П у с т ь к о о р д и н а т а л е в о г о в е р х н е г о у г л а (х , */,), н и ж х
него п р а в о г о — (х , у ), т о г д а к о о р д и н а т а п е р е с е ч е н и я
2 2
диагоналей квадрата:
((*, + * ) / 2 ; (у + у )/2); 2 1 2
(х — х + у + у )/2),
х 2 х 2
нижнего левого:
((х, + х — у + у )/2;
2 (— х + х + у +
х у )/2).
2 х 2 х 2
Д л я (х ; у ) и ( х ; г/ ) д о л ж н ы в ы п о л н я т ь с я с л е д у ю щ и е
х х 2 2
н е р а в е н с т в а : x ^Lx ,
x у ^у
2 ( и н а ч е э т о б у д у т у ж е не
х 2
53
ли п р о с м а т р и в а е м а я координата соответствует левому
к о н ц у о т р е з к а , и у м е н ь ш а е м э т у п е р е м е н н у ю н а 1, е с л и
т е к у щ а я к о о р д и н а т а с о о т в е т с т в у е т п р а в о м у к о н ц у от
резка.
М а к с и м а л ь н о е число взаимно пересекающихся отрез
ков е с т ь м а к с и м а л ь н о е з н а ч е н и е т е к у щ е г о ч и с л а п е р е с е
чений. З а м е т и м , о д н а к о , что е с л и д л я д в у х п р я м о у г о л ь
ников их п р о е к ц и и на оси Ох и Оу п е р е с е к а ю т с я , то
прямоугольники пересекаются.
На втором этапе ищется пересечение прямоугольни
ков. В о з ь м е м н е к о т о р у ю п р я м у ю в и д а у = С ( п а р а л л е л ь
ную оси Ох) и в с е п р я м о у г о л ь н и к и , к о т о р ы е она п е р е с е
к а е т , б у д е м н а з ы в а т ь а к т и в н ы м и . Эти п р я м о у г о л ь н и к и
в м а с с и в е ACTIV п о м е т и м 1, о с т а л ь н ы е — 0.
Теперь, используя р е з у л ь т а т ы первого э т а п а , с учетов
м а с с и в а ACTIV находится м а к с и м а л ь н о е число взаимно
пересекающихся прямоугольников, которые являются
активными для рассматриваемого значения С (ищется
максимальное число пересекающихся активных прямо
угольников).
Т е п е р ь о п р е д е л и м в о з м о ж н ы е з н а ч е н и я С. М о ж н о
о г р а н и ч и т ь с я т о л ь к о теми з н а ч е н и я м и у, к о т о р ы е со
ответствуют концевым точкам проекций прямоугольни
ков на ось Оу. С л е д о в а т е л ь н о , ф о р м и р о в а н и е м а с с и в а
ACTIV м о ж е т о с у щ е с т в л я т ь с я по с л е д у ю щ е м у п р и н ц и п у :
о т с о р т и р о в а в «/-координаты п р о е к ц и й по н е у б ы в а н и ю
з н а ч е н и й (с учетом того ф а к т а , что д л я н е с к о л ь к и х
одинаковых координат вначале р а с п о л а г а ю т с я коорди
наты, соответствующие верхним концам отрезков, а за
тем р а с п о л а г а ю т с я к о о р д и н а т ы , с о о т в е т с т в у ю щ и е н и ж
ним к о н ц а м о т р е з к о в ) .
П р о с м а т р и в а я м а с с и в от н а ч а л а к к о н ц у , м ы а к т и в и
з и р у е м п р я м о у г о л ь н и к , е с л и т е к у щ а я к о о р д и н а т а со
ответствует нижнему концу проекции, или отменяем
активность прямоугольника, если т е к у щ а я координата
с о о т в е т с т в у е т в е р х н е м у концу п р о е к ц и и . П р о ц е с с ф о р м и -
54
р о в а н и я м а с с и в а ACTIV начинаем при значении пере
менной С, р а в н о й м и н и м а л ь н о й у - к о о р д и н а т е ( в н а ч а л е
в с е э л е м е н т ы м а с с и в а р а в н ы 0). А л г о р и т м з а к а н ч и в а е т
р а б о т у п р и з н а ч е н и и п е р е м е н н о й С, р а в н о й м а к с и м а л ь
ной «/-координате.
14. П о н я т н о , что е с л и е с т ь с в е ч а с н у л е в ы м и к о о р д и
н а т а м и и л и к а к и е - н и б у д ь д в е свечи л е ж а т н а п р я м о й ,
п р о х о д я щ е й ч е р е з н а ч а л о к о о р д и н а т , по р а з н ы е с т о р о н ы
от н а ч а л а к о о р д и н а т , то р е ш е н и я не с у щ е с т в у е т .
П у с т ь т а к и х свеч нет. П р о в е д е м л и н и ю ч е р е з ц е н т р
и п е р в у ю с в е ч у ( п у с т ь это т о ч к а А). Е с л и в с е свечи
о к а з а л и с ь по одну с т о р о н у от п р я м о й , то р е ш е н и е по
с т р о е н о . П р е д п о л о ж и м , что с у щ е с т в у ю т свечи по р а з н ы е
с т о р о н ы п р я м о й . О п р е д е л и м н а п р а в л е н и е п р я м о й от
ц е н т р а к свече, и п у с т ь М — м н о ж е с т в о т о ч е к , л е ж а щ и х
по п р а в у ю с т о р о н у от п р я м о й . О п р е д е л и м с р е д и них
т о ч к у В, д л я к о т о р о й у г о л АОВ м а к с и м а л ь н ы й и л е ж и т
в п р е д е л а х от 0° д о 180°. П р о в е д я п р я м у ю ч е р е з точки
О и В, п р о в е р я е м , л е ж а т л и в с е свечи по о д н у с т о р о н у от
нее. Е с л и д а , то р е ш е н и е н а й д е н о . Е с л и нет, то р е ш е
ния нет.
15. П р и п и ш е м с т о р о н а м к а ж д о г о из N п р я м о у г о л ь н и
ков о р и е н т а ц и ю : л е в а я с т о р о н а с ч и т а е т с я и д у щ е й с в е р х у
в н и з ( о р и е н т а ц и ю о б о з н а ч и м 1), н и ж н я я — с л е в а н а п р а
во (2), п р а в а я — с н и з у в в е р х (3), в е р х н я я — с п р а в а н а л е
во (4). Н а й д е м точки п е р е с е ч е н и я всех N п р я м о у г о л ь н и
к о в . О б о з н а ч и м это м н о ж е с т в о т о ч е к S. Д о б а в и м в S уг
л о в ы е т о ч к и всех п р я м о у г о л ь н и к о в . К а ж д о й и з т о ч е к
S п р и п и ш е м п а р у , с о с т о я щ у ю из д в у х о р и е н т а ц и и , со
о т в е т с т в у ю щ и х о р и е н т а ц и и тех р е б е р , п е р е с е ч е н и е м ко
торых точка является.
Найдем в множестве S точку с максимальной ордина
т о й . Е с л и т а к и х т о ч е к н е с к о л ь к о , то в о з ь м е м с р е д и них
т о ч к у Р с м и н и м а л ь н о й а б с ц и с с о й . Э т а т о ч к а л е ж и т на
0
55
пока не в с т р е т и м одну из точек S (это б у д е т л и б о точ
ка — в е р ш и н а п р я м о у г о л ь н и к а , л и б о т о ч к а — п е р е с е ч е
ние с т о р о н ) . О б о з н а ч и м эту т о ч к у Р . Е й п р и п и с а н а п а р а
х
о р и е н т а ц и и ( О , ; 0 ) , о д н а из о р и е н т а ц и и ( п у с т ь , н а п р и
2
в Р ). П е ч а т а е м Р — о ч е р е д н у ю в е р ш и н у к о н т у р а , и д в и
х х
г а е м с я из точки Р (по р е б р у к а к о г о т о п р я м о у г о л ь н и к а )
х
в н а п р а в л е н и и 0 , п о к а не д о с т и г н е м е щ е к а к о й н и б у д ь
2
в е р ш и н ы из S . О б о з н а ч и м ее Р . У нее п а р а о р и е н т а ц и и
2
(Of; 0 0 . П у с т ь , н а п р и м е р , 0 = 0 , т о г д а мы из о ч е р е д н о й
2 2
в е р ш и н ы к о н т у р а Р б у д е м д в и г а т ь с я в н а п р а в л е н и и Of
2
и т. д., п о к а не д о с т и г н е м в е р ш и н ы Р . К о н т у р в ы п и с а н .
0
56
Е с л и м ы н а й д е м т а к и е /, / и k, что при х = В[\, i]
интервал (Л [1, /']; Л [1, не п о к р ы т м н о г о у г о л ь н и к а
ми (т. е. Л [2, j] = A [2, / + 1] = . . . =А [2, Л] = 0), а и н т е р
валы (Л[1, Л [ 1 , /]) и (Л [ 1 , k+Ц Л [ 1 , Л + 2])
п о к р ы т ы (т. е. Л [2, / — 1 ] > 0 и Л [2, & + 1 ] > 0 ) , и т о ч к а
(х; у) = (В [ 1 , г']; Л [ 1 , /]) не п р и н а д л е ж и т в н е ш н е м у к о н т у
ру ф и г у р ы — о б ъ е д и н е н и ю п р я м о у г о л ь н и к о в , то у ф и г у
р ы е с т ь по к р а й н е й м е р е о д н а « д ы р к а » . Ч т о б ы , п р и
необходимости, выписать контур «дырки», поступим, как
и в с л у ч а е н а х о ж д е н и я в н е ш н е г о к о н т у р а , — п о й д е м по
р е б р а м , о б р а з у ю щ и м к о н т у р « д ы р к и » , но обход к о н т у р а
н е о б х о д и м о б у д е т о с у щ е с т в л я т ь по ч а с о в о й с т р е л к е ,
т. е. п р о т и в о р и е н т а ц и и с т о р о н .
16. К о н т у р м о ж е т и м е т ь и з л о м л и ш ь в т о ч к а х , л е ж а
щ и х на с т е н а х з д а н и й . З а н е с е м в м а с с и в Л к о о р д и н а т ы
L[i] и R[i] и о т с о р т и р у е м его по н е у б ы в а н и ю . З а м е т и м
т а к ж е , ч т о м е ж д у д в у х с о с е д н и х стен ( о п р е д е л я е м ы х к а ж
дыми двумя соседними элементами массива) высота
контура остается постоянной. Поэтому д л я к а ж д ы х двух
с о с е д н и х э л е м е н т о в м а с с и в а Л н а й д е м их п о л у с у м м у
(координату точки, л е ж а щ е й м е ж д у стенами) и вычис
л и м в ы с о т у к о н т у р а в этой т о ч к е ; п о с л е этого мы б у д е м
з н а т ь в ы с о т ы всех г о р и з о н т а л ь н ы х п л о щ а д о к и к о о р д и
наты н а ч а л а и конца этих п л о щ а д о к .
Будем в ы п и с ы в а т ь контур точка за точкой, начиная
с самой левой точки контура.
Если две соседние горизонтальные п л о щ а д к и имеют
о д и н а к о в у ю в ы с о т у , то мы их « с к л е и в а е м » , т. е. р а с с м а т
риваем к а к одну площадку.
Е с л и ж е д в е с о с е д н и е п л о щ а д к и р а з л и ч а ю т с я по
в ы с о т е , то, с л е д о в а т е л ь н о , н а д о в ы п и с а т ь в е р т и к а л ь н ы й
излом контура.
17. С ч и т а е м , что т о ч к и в S не д у б л и р у ю т с я ( т а к к а к
S — м н о ж е с т в о ) . В в е д е м в м н о ж е с т в о S точки (0; да),
(0; 0), ( У ; 0), (v; w) — в е р ш и н ы А. Б у д е м и с п о л ь з о в а т ь
д в а д в у м е р н ы х м а с с и в а — ВХ и BY; в м а с с и в е ВХ р а с п о
л а г а ю т с я координаты точек множества S в порядке
57
н е у б ы в а н и я а б с ц и с с ы , в BY— по н е в о з р а с т а н и ю о р д и н а
т ы . П а р а (BX[i, 1]; BX[i, 2]) ( а н а л о г и ч н о (BY[j, 1];
BY [/", 2])) е с т ь х- и «/координаты т о ч к и из 5 .
Р а с с м о т р и м м н о ж е с т в о п р я м о у г о л ь н и к о в Я„ у д о в л е
т в о р я ю щ и х у с л о в и ю з а д а ч и . Т о т и з них, к о т о р ы й и м е е т
максимальную площадь, и является искомым. Очевидно,
что н а к а ж д о й из сторон Я, д о л ж н а л е ж а т ь т о ч к а из
S л и б о с т о р о н а Я, д о л ж н а л е ж а т ь на с т о р о н е А.
Рассмотрим следующие случаи.
1) В е р х н я я с т о р о н а Я л е ж и т на в е р х н е й с т о р о н е
п р я м о у г о л ь н и к а А. Д л я к а ж д о й т о ч к и BX[i] и щ е м , д в и
г а я с ь по м а с с и в у ВХ в п р а в о и в л е в о от э л е м е н т а ВХ [/],
т а к и е п е р в ы е ВХ [/] и BX[k], /<*', k>i, что BX[j, 2 ] >
>BX[i, 2], BX[k, 2]>BX[i, 2].
С ч и т а е м , что с т о р о н ы п р я м о у г о л ь н и к а Я, п р о х о д я т :
н и ж н я я — ч е р е з т о ч к у BX[i], л е в а я — ч е р е з BX[j], пра
в а я — ч е р е з ВХ [к]. В е р х н я я с т о р о н а л е ж и т на в е р х н е й
с т о р о н е А.
Таким образом находим все прямоугольники, примы
к а ю щ и е к верхней стороне.
Прямоугольники, п р и м ы к а ю щ и е к нижней, левой
и п р а в о й с т о р о н а м А, н а х о д я т с я а н а л о г и ч н о , но в д в у х
п о с л е д н и х с л у ч а я х н а д о в м е с т о ВХ и с п о л ь з о в а т ь м а с
сив BY.
2) Н и о д н а из с т о р о н Р не л е ж и т н а с т о р о н е А. Б е р е м
{
BY[k, l]^X ,
End BY[j, l]<BY[i, 1], BY[k, \}>BY[i, 1]
( о б ъ я с н е н и е с м о т р и т е ниже), т. е. м ы находим точки с м а к
с и м а л ь н о й о р д и н а т о й , через к о т о р ы е м о ж н о провести п р а
вую и л е в у ю стороны п р я м о у г о л ь н и к а Я,. В н у т р и интер
в а л а (BY[j, 1]; BY[k, 1]) н а о с и Ох и щ е м т о ч к у BY [г, 1]
т а к у ю , что / / к о о р д и н а т а э т о й точки BY [г, 2] м а к с и
58
м а л ь н а я , м е н ь ш е в е л и ч и н ы т а х { В У [ / , 2], BY[k, 2]}.
Ч е р е з эту т о ч к у В У [г] п р о в е д е м н и ж н ю ю с т о р о н у п р я м о
угольника. Полагаем X — ВY[/',
Begin 1], X — BY[k, 1].
End
Н о э т и м п р я м о у г о л ь н и к о м м о ж е т не и с ч е р п ы в а т ь с я
все множество прямоугольников, у которых точка ВУ[г]
л е ж и т на в е р х н е й с т о р о н е . П о п ы т а е м с я н а й т и е щ е один
из т а к и х п р я м о у г о л ь н и к о в . О ч е в и д н о , что л е в а я е г о
с т о р о н а и м е е т х - к о о р д и н а т у не м е н ь ш е чем X а пра Begin>
п о ч е м у ) , BY[r, 2 ] — м а к с и м а л ь н а я из всех о р д и н а т ,
м е н ь ш е т а х { В У [ / , 2], BY[k, 2]} ( м ы « с у ж а е м » п р я м о
у г о л ь н и к к а к м о ж н о н е з н а ч и т е л ь н е е ) . Е с л и BY [г, 1 ] <
<ZBY[i, 1], т о э т о н о в а я л е в а я с т о р о н а , и н а ч е — н о в а я
п р а в а я . Н а х о д и м н о в у ю н и ж н ю ю с т о р о н у и т. д. Е с л и м ы
не м о ж е м н а й т и нового з н а ч е н и я б У [г], т о п р о с м о т р
п р я м о у г о л ь н и к о в с точкой В У [г] на в е р х н е й с т о р о н е
закончен, и мы переходим к В У [ г ' + 1 ] .
18. Д л и н а с т о р о н ы п е р в о г о к в а д р а т а — 1, в т о р о г о —
1, т р е т ь е г о — 2, ч е т в е р т о г о — 3 и т. д . В и д н о , что д л и н ы
сторон есть числа Фибоначчи, определяемые следующим
рекуррентным соотношением:
А — с в е р х у от Л , А — с л е в а от А , Л — с н и з у от Л ,
3 2 4 3 5 4
Л — о п я т ь с п р а в а от Л и т. д.
6 5
о д н о в р е м е н н о х ^Рх^.хх 2 и у ^Ру^~У\. 2
19. О т с о р т и р у е м к о о р д и н а т ы т о ч е к в п о р я д к е н е у б ы
вания х-координат, а в случае одинаковых х-координат
в п о р я д к е н е в о з р а с т а н и я «/-координат. Н а х о д и м к о о р д и -
59
н а т ы с р е д н е й т о ч к и ( н а х о д я щ е й с я в п о з и ц и и (п. div 2-f-
+ 1) о т с о р т и р о в а н н о г о м а с с и в а к о о р д и н а т ) . П у с т ь эта
т о ч к а и м е е т к о о р д и н а т ы (х ; у ). П р и этом м н о ж е с т в о
0 0
т о ч е к о к а з а л о с ь р а з б и т ы м на 3 ч а с т и : т о ч к и , л е ж а щ и е на
п р я м о й х = х ; т о ч к и , л е ж а щ и е л е в е е п р я м о й х = х ; точ
0 0
ки, л е ж а щ и е п р а в е е п р я м о й х = х . П р е д с т а в и м , что 0
п р я м о у г о л ь н и к а , х - к о о р д и н а т а п р а в о г о к р а я которого
р а в н а х, (х <Сх ),
1 а точки, л е ж а щ и е п р а в е е п р я м о й х = х ,
0 0
Т о г д а с у щ е с т в у е т п р я м а я с д о с т а т о ч н о б о л ь ш и м уг
л о м н а к л о н а ( н а п р и м е р , с у г л о м н а к л о н а , т а н г е н с кото
рого п р е в ы ш а е т в е л и ч и н у (у — / / + 2 ) / Z , где Z —
тах m i n
= m i n (x —х,, х — х ) , к о т о р а я р а з д е л я е т эти ч а с т и . О с т а
Q 2 0
л о с ь р а з д е л и т ь т о л ь к о точки на п р я м о й т а к , чтобы
количество точек в получившихся частях было равным
(т. е. н а й т и т о ч к у п е р е с е ч е н и я р а з д е л я ю щ е й п р я м о й
с п р я м о й х — х ). Е С Л И к о л и ч е с т в о т о ч е к нечетно, то
0
р а з д е л я ю щ а я п р я м а я п р о х о д и т ч е р е з с р е д н ю ю точку,
иначе — н а д средней точкой отсортированного массива,
но п о д п р е д ы д у щ е й , если т а л е ж и т на п р я м о й х = х . 0
Таким образом:
х, — м о ж е т б ы т ь н а й д е н а п р о с м о т р о м м а с с и в а х-коор-
д и н а т с п р а в а н а л е в о от с р е д н е й т о ч к и д о н а х о ж д е н и я
п е р в о й к о о р д и н а т ы , о т л и ч н о й от х ; е с л и така^я к о о р д и н а
0
та не н а й д е н а , то х = х —1; 1 0
д и н а т с л е в а н а п р а в о от с р е д н е й т о ч к и д о н а х о ж д е н и я
п е р в о й к о о р д и н а т ы , о т л и ч н о й от х ; е с л и т а к а я к о о р д и н а
0
т а не н а й д е н а , то Х ! = х + 1 ; 0
точке, е с л и ее х - к о о р д и н а т а р а в н а х и л и р а в н а / / + 1 , 0 0
е с л и х - к о о р д и н а т а т о ч к и , п р е д ш е с т в у ю щ е й с р е д н е й точ
ке, не р а в н а х . 0
60
П о с л е того к а к х , у , х у н а й д е н ы , о с т а л о с ь н а
й 0 ь х
ми (х ; у ), о п р е д е л я е м у ю по с л е д у ю щ е м у п р а в и л у :
2 2
е с л и N — четно,
то х = х ; # = (#o + y i ) / 2 ,
2 0 2
иначе х = х ; у = у -
2 0 2 0
20. П р о в е д е м ч е р е з к а ж д у ю в е р ш и н у этих д в у х в ы
п у к л ы х м н о г о у г о л ь н и к о в п р я м ы е , п а р а л л е л ь н ы е оси
Оу. Эти п р я м ы е р а з б и в а ю т всю п л о с к о с т ь на п о л о с ы .
Пересечение к а ж д о й полосы с в ы п у к л ы м многоугольни
ком о б р а з у е т т р а п е ц и ю , п о э т о м у в н у т р и к а ж д о й п о л о с ы
п е р е с е ч е н и е м д в у х в ы п у к л ы х м н о г о у г о л ь н и к о в б у д е т пе
р е с е ч е н и е д в у х ч е т ы р е х у г о л ь н и к о в . С о б и р а е м все эти
п е р е с е ч е н и я в одну ф и г у р у , у д а л я я п р и этом л о ж н ы е
в е р ш и н ы , к о т о р ы е в о з н и к а ю т на г р а н и ц а х м е ж д у п о л о
сами.
Объединение делается аналогично.
2 1 . Е с л и п р о е к ц и я т о ч к и Z п о п а д а е т на с т о р о н у
м н о г о у г о л ь н и к а , а не на ее п р о д о л ж е н и е , то м и н и м а л ь
ное р а с с т о я н и е от точки Z до с т о р о н ы е с т ь д л и н а п р о в е
д е н н о г о п е р п е н д и к у л я р а . Е с л и ж е п р о е к ц и я т о ч к и Z по
п а д а е т на п р о д о л ж е н и е с т о р о н ы , то м и н и м а л ь н о е р а с с т о
я н и е есть м и н и м у м из р а с с т о я н и й от Z до к о н ц е в ы х т о ч е к
этой стороны.
М и н и м а л ь н о е р а с с т о я н и е от точки Z до к о н т у р а е с т ь
м и н и м у м из р а с с т о я н и й от т о ч к и Z д о к а ж д о й из с т о р о н .
22. П р о в е р я е м , л е ж и т л и т о ч к а Z на к а к о м - л и б о
о т р е з к е . Е с л и нет, то п р о в о д и м о т р е з о к , к о н ц е в ы е т о ч к и
к о т о р о г о Z, и, н а п р и м е р , т о ч к а с н о м е р о м 1. Н а х о д и м
б л и ж а й ш у ю к Z т о ч к у п е р е с е ч е н и я этого о т р е з к а и сто
рон м н о г о у г о л ь н и к о в , на к о т о р ы е р а з б и в а е т с я п л о с к о с т ь .
П у с т ь э т а т о ч к а п р и н а д л е ж и т с т о р о н е АЬ. Д л я т р е у г о л ь
н и к а ZAB с н а ч а л а о п р е д е л и м н а п р а в л е н и е о б х о д а конту
р а от А к В ( з а д а ч а 3). Д л я с т о р о н ы АВ и щ е м с л е д у ю
щ у ю , с м е ж н у ю с ней, с т о р о н у ВС к о н т у р а , к о т о р а я
о б р а з у е т м а к с и м а л ь н ы й по в е л и ч и н е угол с о т р е з к о м ВА
Рис. 27
( у г о л о т с ч и т ы в а е т с я от о т р е з к а АВ по ч а с о в о й или
п р о т и в ч а с о в о й с т р е л к и в з а в и с и м о с т и от того, по или
п р о т и в ч а с о в о й с т р е л к и обход). Н а х о д и м з а м к н у т ы й кон
т у р и о п р е д е л я е м , н а х о д и т с я т о ч к а Z в н у т р и него или
с н а р у ж и ; е с л и с н а р у ж и , то у д а л я е м из ф и г у р ы все р е б р а
этого к о н т у р а и п о в т о р я е м п р о ц е с с ( р и с . 2 7 ) .
2 3 . П о д о б н ы е м н о г о у г о л ь н и к и могут б ы т ь з е р к а л ь н о
с и м м е т р и ч н ы . Ф и г у р а на п л о с к о с т и п о л н о с т ь ю х а р а к т е
р и з у е т с я м а т р и ц е й р а с с т о я н и й C[i, / ] , г д е С [г, / ] —
р а с с т о я н и е от в е р ш и н ы / д о в е р ш и н ы / . Д л я к а ж д о й из
введенных фигур строим свою матрицу расстояний
и п р о в е р я е м , м о ж е м л и мы п о л у ч и т ь из одной м а т р и ц ы
другую перестановкой строк и столбцов и умножением
всех э л е м е н т о в м а т р и ц ы на о д н о и то ж е ч и с л о .
24. Д а д и м д р у г у ю и н т е р п р е т а ц и ю этой з а д а ч и : есть
N отрезков, описываемых уравнениями
П р е д п о л о ж и м , ч т о о т р е з к и не с о в п а д а ю т .
1) Н а й т и в е р х н и й к о н т у р о б ъ е д и н е н и я ф и г у р
a x-\~b^y,
t i = 1, JV, x ^.x^.x
0 u
(т. е. н а й т и т а к у ю р а з б и в к у t , Qt о т р е з к а [х , х ]
p 0 х
и т е к у с о ч к и о т р е з к о в a,x + fe =/y, t j ^ . x ^ t
( , / = l + l
= 0, р — 1, что о т р е з о к flyc-f-f?,- л е ж и т не н и ж е
любого другого отрезка при / - ^ х < ^ г ) . ; / + 1
62
2 ) Н а й т и т а к у ю р а з б и в к у о т р е з к а [х , x ] т о ч к а м и 0 t
ков а х-\-Ь i— 1,
{ ь N не п е р е с е к а ю т с я , а на г р а
н и ц а х с е к т о р а , п р и x = S и п р и x — S , л е ж и т по t i + l
к р а й н е й м е р е по одной т о ч к е п е р е с е ч е н и я о т р е з
ков а,Аг+Ь,-, i—1, N.
Р е ш и м с н а ч а л а п у н к т 2 ) з а д а ч и , з а т е м п у н к т 1).
Н а й д е м в с е т о ч к и п е р е с е ч е н и я о т р е з к о в а,х-f-b , i = l , ;
N, д р у г с д р у г о м . Д о б а в и м в э т о м н о ж е с т в о т о ч к и x Q
и Х\. У п о р я д о ч и м точки п е р е с е ч е н и я по в о з р а с т а н и ю
(если в последовательности встречаются несколько точек
с о д н и м и т е м ж е з н а ч е н и е м , то о с т а в л я е м из них т о л ь к о
одну). Получаем таким образом последовательность
SQ, SQ.
Д л я к а ж д о г о о т р е з к а [S S ], / = 0, pQ—1 н а х о
j+l
д и м е г о с е р е д и н у Z - = (S - + S - ) / 2 , в ы ч и с л я е м з н а ч е н и я
/ / / + 1
/, = a , Z ; - ( - г = 1 ,
7 N, с о р т и р у е м их по в о з р а с т а н и ю .
Индексы i значений в отсортированной последователь
ности д л я ф и к с и р о в а н н о г о / к а к р а з и е с т ь и с к о м а я
п е р е с т а н о в к а (г,,-, г' , i ) чисел 1, 2 , 3,
2/ Nj N, у п о м я н у
тая в формулировке задачи в пункте 2 д л я отрезка
[S„ S / + I ].
Д л я р е ш е н и я п у н к т а 1 в ы п и ш е м по п о р я д к у д л я
к а ж д о г о о т р е з к а [S S ], /* = 0 ,
jt j+l Q— 1, в е л и ч и н ы i Nj
о т р е з к а м [S S ] , / = 0 , Q — 1, и о п р е д е л я е м п о с л е д о
jt / + l
по у к а з а н н о м у в ы ш е м е т о д у из т о ч е к S , S ). 0 Q
63
ках эта диагональ. Обозначим количество пересечений
через S. Проведение диагонали:
1) у в е л и ч и в а е т количество разбивок л-угольника
на 1;
2) к а ж д о е п е р е с е ч е н и е этой д и а г о н а л и с р а н е е п р о в е
денной диагональю т а к ж е увеличивает количество
р а з б и в о к н а 1 ( п о у с л о в и ю н и к а к и е 3 д и а г о н а л и не
п е р е с е к а ю т с я в одной т о ч к е ) .
И т а к , после проведения ( L + l ) - f t д и а г о н а л и коли
чество ч а с т е й с т а н е т A' + S + l ( п р е д п о л а г а е т с я , что
(L-4- 1)-я д и а г о н а л ь не с о в п а д а е т ни с одной р а н е е п р о в е
денной).
К а к определить, пересекается ли диагональ, соединя
ющая вершины i и /, с диагональю, заданной вершинами
т и р ? Вершины i и / р а з б и в а ю т контур многоугольника
на 2 ч а с т и : м н о ж е с т в о А — в е р ш и н ы , л е ж а щ и е на конту
ре м е ж д у в е р ш и н а м и / и /, и множество В — вершины
к о н т у р а м е ж д у / и i ( м н о ж е с т в а Л и В не в к л ю ч а ю т i и / ) .
Е с л и m п р и н а д л е ж и т о д н о м у и з этих м н о ж е с т в , ар —
другому, то д и а г о н а л и пересекаются, иначе — нет.
26. Б у д е м о б о з н а ч а т ь ч е р е з V в е р ш и н у л о м а н о й с к о
t
о р д и н а т а м и (х„ г/ ). ;
Д л я того ч т о б ы р а з н я т ь э т о т к р у г , н е о б х о д и м о т я н у т ь
в н а п р а в л е н и и вектора S, выходящего из точки V и л е 2
ж а щ е г о л и б о в н у т р и у г л а VyV V ( в е р ш и н а у г л а — т о ч к а
2 3
V ), л и б о в н у т р и ц е н т р а л ь н о - с и м м е т р и ч н о г о е м у относи
2
л е н и й п е р е м е щ е н и я , з а т е м с ч и т а е м , что п а р а л л е л ь н ы м
п е р е н о с о м в е р ш и н ы всех к о н у с о в с о в м е щ е н ы в одной
т о ч к е . П е р е с е ч е н и е всех С i — 2,
ь k—1, и д а с т и с к о
мое в о з м о ж н о е н а п р а в л е н и е р а з н и м а н и я к р у г а . Е с л и э т о
64
п е р е с е ч е н и е пусто, то к р у г р а з н я т ь н е л ь з я , и н а ч е —
можно.
2 7 . П у с т ь т о ч к а Z — ц е н т р к о о р д и н а т (если это не
т а к , с д е л а е м п а р а л л е л ь н ы й п е р е н о с ) . Д л я того чтобы
з в е н о з а б о р а б ы л о п о л н о с т ь ю видно, н е о б х о д и м о и д о с т а
точно, ч т о б ы из точки Z, где стоит ч е л о в е к , б ы л и в и д н ы
о б е в е р ш и н ы этого з в е н а и е щ е к а к а я - н и б у д ь его внут
р е н н я я т о ч к а . Б у д е м с ч и т а т ь , что в е р ш и н а Р з в е н а
в и д н а , е с л и и н т е р в а л ( Z ; Р) не п е р е с е к а е т н и к а к и х
з в е н ь е в з а б о р а или ж е если обе к о н ц е в ы е в е р ш и н ы
п е р е с е к а е м о г о з в е н а k л е ж а т на [Z; Р], т. е. ч е л о в е к
с м о т р и т в д о л ь з в е н а k.
О т с о р т и р у е м по н е у б ы в а н и ю у г л ы , о б р а з у е м ы е с
о с ь ю Ох о т р е з к а м и , о д н а к о н ц е в а я т о ч к а к о т о р ы х Z,
а в т о р а я п р о б е г а е т все в е р ш и н ы з в е н ь е в ( у г л ы о т с ч и т ы -
в а ю т с я от точки Z в п о л о ж и т е л ь н о м направлении,
т. е. п р о т и в ч а с о в о й с т р е л к и ) . П о л у ч а е м п о с л е д о в а т е л ь
ность углов а , а , х 2 а . Д о б а в л я е м в эту п о с л е д о в а т е л ь
п
§ 1. П О С Л Е Д О В А Т Е Л Ь Н Ы Й П О И С К
НЕОБХОДИМОГО ЭЛЕМЕНТА В МАССИВЕ
Е с л и у н а с нет н и к а к о й д о б а в о ч н о й и н ф о р м а ц и и
о р а з ы с к и в а е м ы х д а н н ы х , то о ч е в и д н ы й п о д х о д — это
последовательный просмотр массива. Такой метод назы
в а е т с я линейным и л и последовательным поиском.
Рассмотрим сначала реализацию последовательного
п о и с к а д л я з а д а ч т и п а 1.
П о и с к з а к а н ч и в а е т с я п р и в ы п о л н е н и и одного из д в у х
следующих условий:
66
1. Э л е м е н т н а й д е н , т. е. в м а с с и в е е с т ь т а к о й э л е м е н т
А [г], что А Щ = Х.
2. В е с ь м а с с и в п р о с м о т р е н и с о в п а д е н и я не о б н а р у
жено.
О д н и м из в о з м о ж н ы х р е ш е н и й д а н н о й з а д а ч и м о ж е т
б ы т ь с л е д у ю щ е е : пусть Р — п е р е м е н н а я л о г и ч е с к о г о т и
п а , к о т о р а я имеет з н а ч е н и е « и с т и н а » , если э л е м е н т
в массиве найден, и «ложь» — в противном случае.
Р: =«Ложь»
нц д л я i от 1 д о N
если A[i] = X
то (2.1)
Р : = «Истина»
все
кц
Е с л и п о с л е в ы п о л н е н и я а л г о р и т м а Р = « И с т и н а » , то
э л е м е н т н а й д е н , если п е р е м е н н а я Р не и з м е н и л а своего
з н а ч е н и я , то э л е м е н т а нет.
Ч а с т о т р е б у е т с я не т о л ь к о о п р е д е л и т ь , есть л и в м а с
с и в е и с к о м ы й э л е м е н т , но и у с т а н о в и т ь , на к а к о м м е с т е
он н а х о д и т с я . Б у д е м х р а н и т ь и н д е к с н а й д е н н о г о э л е
м е н т а в п е р е м е н н о й К-
К: = 0
н ц д л я i от 1 д о N
если A [ i ] = X
то (2.2)
K:=i
все
кц
П о с л е в ы п о л н е н и я д а н н о г о а л г о р и т м а по з н а ч е н и ю
п е р е м е н н о й К м о ж н о о п р е д е л и т ь , е с т ь ли в м а с с и в е
и с к о м ы й э л е м е н т , и е с л и есть, то г д е он стоит. Е с л и
в м а с с и в е н е с к о л ь к о т а к и х э л е м е н т о в , то в п е р е м е н н о й
К б у д е т х р а н и т ь с я н о м е р п о с л е д н е г о из них. Е с л и т а к о г о
э л е м е н т а нет, то з н а ч е н и е п е р е м е н н о й К не и з м е н и т с я
(останется равным нулю).
67
На практике операцию поиска приходится выполнять
достаточно часто, и скорость работы п р о г р а м м ы нахо
д и т с я в п р я м о й з а в и с и м о с т и от и с п о л ь з у е м о г о а л г о р и т м а
поиска.
В рассмотренных выше алгоритмах требуется про
с м о т р е т ь в е с ь м а с с и в д а ж е в том с л у ч а е , е с л и и с к о м ы й
э л е м е н т н а х о д и т с я в м а с с и в е на п е р в о м м е с т е .
Д л я сокращения времени поиска можно останавли
в а т ь с я с р а з у п о с л е того, к а к э л е м е н т н а й д е н . В э т о м
с л у ч а е весь м а с с и в п р и д е т с я п р о с м о т р е т ь т о л ь к о т о г д а ,
к о г д а и с к о м ы й э л е м е н т п о с л е д н и й или его нет в о о б щ е .
В результате получим следующий алгоритм:
i: = l
нц п о к а ( i < = N ) и (A [ i ] < > Х )
|i:=i + l (2.3)
кц
A [ N + 1]: = Х
i: = 1
нц пока A [ i ] < > X (2.4)
| i:=i+l
кц
68
Е с л и по выходу из ц и к л а i = N-\-l (X р а в е н « б а р ь
е р у » ) , то э л е м е н т а X в м а с с и в е Л [ 1 ..Л/] нет.
Д л я реализации поиска в з а д а ч а х типа 2 (нахожде
ние к о л и ч е с т в а э л е м е н т о в , р а в н ы х X) в л ю б о м с л у ч а е
придется просматривать весь массив.
Е с л и т р е б у е т с я о п р е д е л и т ь к о л и ч е с т в о э л е м е н т о в , то
з а в о д я т п е р е м е н н у ю , з н а ч е н и е к о т о р о й у в е л и ч и в а ю т на
1 к а ж д ы й р а з , когда найден н у ж н ы й элемент. Т а к у ю
п е р е м е н н у ю н а з ы в а ю т «счетчиком». Д о н а ч а л а просмот
ра элементов массива «счетчику» нужно з а д а т ь началь
ное з н а ч е н и е или, д р у г и м и с л о в а м и , инициализировать
з н а ч е н и е п е р е м е н н о й . В д а н н о м с л у ч а е это н а ч а л ь н о е
значение равно нулю. Алгоритм подсчета элементов,
равных заданному, составьте самостоятельно.
Д л я получения индексов искомых элементов созда
д и м н о в ы й м а с с и в B[l..N]. К а к только будет найден
н е о б х о д и м ы й э л е м е н т , его и н д е к с б у д е т з а н о с и т ь с я
в м а с с и в В. В п е р е м е н н о й К б у д е т х р а н и т ь с я н о м е р
п о с л е д н е г о з а н я т о г о м е с т а в м а с с и в е В. С н а ч а л а / ( = 0 .
К: = 0
н ц д л я i от 1 до N
если A [ i ] = X
то
К:=К-И (2.5)
B[KJ:=i
все
кц
П о с л е з а в е р ш е н и я р а б о т ы п е р в ы е Д' э л е м е н т о в м а с
сива В будут с о д е р ж а т ь индексы искомых элементов.
1. Что н а з ы в а ю т п о с л е д о в а т е л ь н ы м поиском?
2 . Как о п р е д е л и т ь , что в м а с с и в е б ы л н а й д е н э л е м е н т ?
3 . К а к о й из а л г о р и т м о в (2.2), (2.3) или ( 2 . 4 ) р а б о т а е т б ы с т р е е
и почему?
4. Что т а к о е поиск с « б а р ь е р о м » ?
5 . Д л я ч е г о и с п о л ь з у ю т п е р е м е н н ы е «счетчики»?
6 . Что т а к о е и н и ц и а л и з а ц и я п е р е м е н н о й ?
69
§ 2. П О И С К М А К С И М А Л Ь Н О Г О И М И Н И М А Л Ь Н О Г О
ЭЛЕМЕНТОВ В МАССИВЕ
m a x : = А [1]
н ц д л я i от 2 до N
если A [ i ] > m a x (2.6)
то
m a x : = А [i]
все
нц
m a x : = А [1]
К: = 1
н ц д л я i от 2 до N
если A [ i ] > m a x (2.7)
то
max:=A[i]
K:=i
все
кц
После выполнения алгоритма переменная К будет
содержать значение индекса максимального элемента.
70
Если в массиве несколько элементов имеют м а к с и м а л ь
ное з н а ч е н и е , то в п е р е м е н н о й К б у д е т з а п о м и н а т ь
с я и н д е к с п е р в о г о из них. Е с л и и с п о л ь з о в а т ь у с л о в и е
Л [ / ] ^ т а х , то б у д е т з а п о м и н а т ь с я и н д е к с п о с л е д н е г о из
максимальных.
Д л я поиска минимального элемента необходимо за
м е н и т ь з н а к > в Е С Л И на з н а к < •
1. К а к о й э л е м е н т м а с с и в а я в л я е т с я м а к с и м а л ь н ы м , к а к о й —
минимальным?
2 . Как найти м а к с и м а л ь н ы й э л е м е н т в м а с с и в е ? Как найти
минимальный элемент в массиве?
3 . Как о п р е д е л и т ь н о м е р п е р в о г о э л е м е н т а , р а в н о г о м а к с и
мальному?
4. Как о п р е д е л и т ь н о м е р п о с л е д н е г о э л е м е н т а , р а в н о г о м и н и
мальному?
§ 3. У П О Р Я Д О Ч Е Н И Е ЭЛЕМЕНТОВ МАССИВА
Д а в а й т е п р е д с т а в и м , что п е р е д н а м и п о с т а в л е н а з а
д а ч а р а с с т а в и т ь N чисел по у б ы в а н и ю . К а к б ы мы ее
решали?
72
Наверное, пришлось бы сначала найти максимальное
и з всех ч и с е л и п о м е н я т ь м е с т а м и с п е р в ы м ч и с л о м . З а
т е м из е щ е н е о т с о р т и р о в а н н ы х э л е м е н т о в н а д о б ы л о бы
опять выбрать максимальный элемент и поменять места
ми с п е р в ы м элементом из е щ е не отсортированной части.
Примененный нами метод и называется сортировкой
выбором.
Ф о р м а л ь н о его м о ж н о о п и с а т ь с л е д у ю щ и м о б р а з о м .
Н а i-м ш а г е ( г = 1 , N—1):
в ы б и р а е м из э л е м е н т о в с и н д е к с а м и от i до N м а к с и
мальный элемент;
меняем местами найденный максимальный и элемент
А [/']; на г'-м м е с т е о к а з ы в а е т с я м а к с и м а л ь н ы й э л е м е н т из
еще неотсортированной части массива.
П о с л е в ы п о л н е н и я N—1-го ш а г а в п о з и ц и и A [N]
будет находиться самый маленький элемент массива.
Н а з в а н и е м е т о д а , «сортировка выбором» определяет
ся тем, что на к а ж д о м ш а г е м ы находим ( в ы б и р а е м ) м а к
с и м а л ь н ы й э л е м е н т из е щ е н е о т с о р т и р о в а н н о й ч а с т и
массива.
Запишем алгоритм сортировки выбором:
н ц д л я i от 1 до N—1
K: = i
m a x : = A [i]
н ц д л я j от i + 1 до N
если A [ i ] > m a x
то (2.8)
max:=A[j]
K:=j
все
кц
A[K]:=A[i]
A[i]:=max
кц
N - I + N - 2 + N - 3 +... + \ = N (N - \ )/2 = (N -
2
N)/2.
3.2. Сортировка о б м е н о м
Р а с с м о т р и м е щ е один м е т о д с о р т и р о в к и , к о т о р ы й
формально можно описать так:
Н а 1-м ш а г е (/ = 1, N—1) выполняем:
1. С р а в н и в а е м п е р в ы е д в а э л е м е н т а . Е с л и п е р в ы й
м е н ь ш е в т о р о г о , то м е н я е м их м е с т а м и .
74
2. С р а в н и в а е м второй и т р е т и й , т р е т и й и ч е т в е р т ы й ,
N — i и N — i-f-1, при необходимости меняя элементы
м е с т а м и . С а м ы й м а л е н ь к и й о к а ж е т с я на г-м м е с т е в м а с
сиве.
После первого шага самый маленький элемент масси
в а п о м е щ а е т с я на N-e м е с т о . М а с с и в б у д е т о т с о р т и р о в а н
после просмотра, в котором участвуют только первый
и второй элементы.
Н а з в а н и е м е т о д а «сортировка обменом» определяет
с я т е м , что а л г о р и т м о с н о в ы в а е т с я на о б м е н е м е с т а м и
двух элементов массива.
Описанный метод сортировок обменом н а з ы в а ю т так
ж е пузырьковой сортировкой.
Алгоритм метода сортировки обменом:
н ц д л я i от 1 до N — 1
н ц д л я j от 1 до N — i
если A [ j ] < A [ j + l ]
то
x:=A[j]
A [ j ] : = A [ j + l] (2.9)
A[j + l ] : = x
все
кц
кц
75
элементов в массиве. Поэтому количество перестановок
(в худшем случае) будет равно количеству сравнений,
т. е. (N -N)/2.
2
Р : = «Истина»
K:=N—1
нц п о к а Р = « И с т и н а »
Р : = «Ложь»
R:=K
н ц д л я j от 1 до R
если A [ j ] < A [ j + ' l ]
то
x:=A[j] (2.10)
A [ j ] : = A [ j + l]
A[j + l ] : = x
Р : = «Истина»
K:=j
все
кц
кц
76
с л е д н е г о о б м е н а . П е р е м е н н а я R я в л я е т с я г р а н и ц е й , на
которой з а к а н ч и в а е т с я просмотр.
Е с л и п р о а н а л и з и р о в а т ь п у з ы р ь к о в у ю с о р т и р о в к у , то
м о ж н о з а м е т и т ь , что с а м о е м а л е н ь к о е ч и с л о з а н и м а е т
с в о е м е с т о з а один п р о х о д по м а с с и в у , а с а м о е б о л ь ш о е
п е р е м е щ а е т с я по н а п р а в л е н и ю к с в о е м у м е с т у на одну
п о з и ц и ю п р и к а ж д о м п р о х о д е . Это н а в о д и т на м ы с л ь
чередовать н а п р а в л е н и е проходов. Т а к а я сортировка на
з ы в а е т с я шейкер-сортировкой. Р а с с м о т р и м ее р а б о т у н а
том ж е м а с с и в е А={0, 1, 9, 2, 4, 3 , 6, 5}. (L — л е в а я
граница просмотра, R — правая.)
1. 1, 9, 2, 4, 3, 6, 5, О L=l, R = 7
2. 9, 1, 6, 2, 4, 3 , 5, О L = 2, /? = 7
3. 9, 6, 2, 4, 3, 5, 1, О L = 2, R = 6
4. 9, 6, 5, 2, 4, 3 , 1, О L = 3, R = 6
5. 9, 6, 5, 4, 3, 2, 1, О L = 3, R = 5
6. 9, 6, 5, 4, 3 , 2, 1, 0 L = 4, R = 5
Алгоритм данной сортировки попытайтесь написать
самостоятельно.
В с е эти у л у ч ш е н и я с о к р а щ а ю т к о л и ч е с т в о о п е р а ц и й
с р а в н е н и я д л я ч а с т н ы х с л у ч а е в , о д н а к о при н е б л а г о п р и
ятной начальной расстановке элементов массива (поду
м а й т е к а к о й ) п р и х о д и т с я п р о д е л а т ь все (N — iV)/2 опе
2
рации сравнения*.
1. На каких п р и н ц и п а х о с н о в а н а с о р т и р о в к а в ы б о р о м ?
2 . На каких п р и н ц и п а х о с н о в а н а с о р т и р о в к а о б м е н о м ?
3. За какое количество операций сравнения будет отсортиро
ван м а с с и в , е с л и п р и м е н я т ь с о р т и р о в к у о б м е н о м ? с о р т и
ровку выбором?
4. Сколько перестановок будет сделано для упорядочения
массива, если применять сортировку о б м е н о м ? сортировку
выбором?
5 . Как м о ж н о с о к р а т и т ь в р е м я р а б о т ы а л г о р и т м а с о р т и р о в к и
обменом?
6. А л г о р и т м какой из с о р т и р о в о к б у д е т работать б ы с т р е е ?
Почему?
77
§ 4. СОКРАЩЕНИЕ ОБЛАСТИ ПОИСКА.
д в о и ч н ы й п о и с к
78
П р и в ы п о л н е н и и д а н н о г о а л г о р и т м а н а м п р и д е т с я на
к а ж д о м ш а г е п е р е с ч и т ы в а т ь г р а н и ц ы п о и с к а . Т а к , на
п е р в о м ш а г е л е в а я г р а н и ц а L = 1, п р а в а я — R = N. Н а
втором ш а г е либо левая, либо п р а в а я граница поменяет
свое значение.
П о и с к б у д е т п р о д о л ж а т ь с я д о тех п о р , п о к а э л е м е н т
не б у д е т н а й д е н , л и б о к о г д а л е в а я и п р а в а я г р а н и ц ы
п о и с к а не с о в п а д у т , что с о о т в е т с т в у е т о т с у т с т в и ю э л е
мента в массиве.
П у с т ь н а т у р а л ь н о е ч и с л о К е с т ь к о л и ч е с т в о опе
раций сравнения, которые необходимы д л я нахожде
ния элемента в упорядоченном массиве методом дихото
м и и . Ч и с л о К о п р е д е л я е т с я из с л е д у ю щ е г о н е р а в е н с т в а :
N-^2 ,
K
п р и ч е м К — м и н и м а л ь н о е из всех в о з м о ж н ы х .
П р и м е ч а н и е . Обычно в математике для определения числа
К пользуются функцией log '. Тогда число К будет вычислено по форму
ле / C = [ l o g N]-\-1, где квадратные скобки обозначают целую часть
2
А л г о р и т м и м е е т с л е д у ю щ и й вид:
L: = l
R:=N
, Р : = «ложь»
нц п о к а ( L < ! = R ) и ( Р = « л о ж ь » )
m : = d i v ( R + L, 2)
если А [ т ] = Х
то
Р : = «истина»
иначе
если А [ т ] > Х (2.11)
то
L:=m+1
иначе
| R:=m—1
все
все
кц
'Если 2° = 6, то l o g 6 = a.
2
79
После выполнения алгоритма в переменной т будет
х р а н и т ь с я н о м е р н а й д е н н о г о э л е м е н т а , если он есть
в массиве (Р = «истина»).
П р и м е р . В м а с с и в е А н а й т и э л е м е н т х:
М о ж н о н е с к о л ь к о с о к р а т и т ь з а п и с ь а л г о р и т м а , если
как и в случае линейного поиска попытаться упростить
составное условие цикла ПОКА.
L: = 1
R:=N
н ц пока ( L < R )
m: = d i v ( R + L , 2)
если A [ m ] > X
то (2.12)
L:=m+1
иначе
| R:=m
все
кц
80
если A [ R ] = X
то
Р:=«истина»
иначе
| Р : = «ложь»
все
После выполнения цикла к переменной R хранится
н о м е р э л е м е н т а , р а в н о г о X, е с л и т а к о й э л е м е н т в м а с с и
ве е с т ь . Е с л и э л е м е н т а нет, то п е р е м е н н а я R п о к а з ы в а е т
н о м е р м е с т а в м а с с и в е , к у д а м о ж н о в с т а в и т ь э л е м е н т X,
не н а р у ш а я у п о р я д о ч е н н о с т и м а с с и в а .
1. В каких с л у ч а я х м о ж н о и с п о л ь з о в а т ь м е т о д д в о и ч н о г о п о
иска? П р и в е д и т е п р и м е р ы и з ж и з н и .
2 . В ч е м с у т ь м е т о д а д в о и ч н о г о поиска?
3 . П о ч е м у а л г о р и т м (2.12) б у д е т р а б о т а т ь б ы с т р е е , ч е м а л г о
р и т м (2.11)?
п о р я д к а N о п е р а ц и й . И с п о л ь з у я д и х о т о м и ч е с к и й поиск,
2
5 . 3 . Сортировка вставками
ций с р а в н е н и я и с т о л ь к о ж е п е р е с т а н о в о к э л е м е н т о в
в массиве. Попытайтесь составить алгоритм метода са
мостоятельно.
81
Если д л я поиска места элемента А Щ в упорядо
ч е н н у ю с о в о к у п н о с т ь А [1], A [i— 1] в о с п о л ь з о в а т ь с я
м е т о д о м д в о и ч н о г о п о и с к а , то к о л и ч е с т в о о п е р а ц и й с р а в
н е н и я б у д е т п о р я д к а N l o g N, что с у щ е с т в е н н о м е н ь ш е
2
чем N . К о л и ч е с т в о ж е п е р е с т а н о в о к б у д е т п о р я д к а N .
2 2
Т а к о й м е т о д с о р т и р о в к и н а з ы в а е т с я сортировкой би
нарными вставками.
Алгоритм сортировки бинарными вставками:
н ц д л я i от 2 д о N
R:=i
L: = l
нц пока L < R
r n : = d i v ( L + R, 2)
е с л и A [ m ] > A [i]
то
L:=m+1 (2.13)
иначе
|R:=m
все
кц
k: = R
x:=A[i]
н ц д л я j от i до к -f-1 ш а г —1
|A[j]:=A[j-I] .
кц
А[к]:=х
КЦ
Ц и к л П О К А L<R — ц и к л п о и с к а м е с т а -вставки. О н
о с н о в а н на м е т о д е д в о и ч н о г о п о и с к а . ( С р а в н и с а л г о
р и т м о м 2.12.) Ц и к л Д Л Я / О Т i Д О k+l ШАГ—1
сдвигает элементы для освобождения места вставки.
Пример. (Элемент, который вставляем, подчеркнут.)
1. 1, 9, 2, 4, 3 , 6, 5, О
2. 9, 1, 2, 4, 3, 6, 5, О
3. 9, 2, 1, 4, 3 , 6, 5, О
4. 9, 4, 2, 1, 3 , 6, 5, О
82
5. 9, 4, 3, 2, 1, 6, 5, О
6. 9, 6, 4, 3, 2, 1, 5, О
7. 9, 6, 5, 4, 3, 2, 1, О
8. 9, 6, 5, 4, 3, 2, 1, О
5.2. С о р т и р о в к а слияниями
Ai: = l
Bi: = l
Ci: = l : т е к у щ и е и н д е к с ы в м а с с и в а х А, В, С
н ц пока Ci < = N + М
если A [ A i ] > В [Bi]
то
C[Ci]:=A[Ai]
Ai:=Ai + l
иначе
C[Ci]:=B[Bi]
Bi:=Bi + l
все '
Ci:=Ci+l (2.14)
если ( A i > N ) и ( C i o N + M) : П р о в е р к а о к о н
чания одного из массивов
83
то
н ц д л я i от Bi до М
C[Ci]:=B[i]
Ci:=Ci+l
кц
все
если ( B i > M ) и ( C i O N + M )
то
н ц д л я i от Ai д о N
C[Ci]:=A[i]
Ci:=Ci+l
кц
все
кц
84
4. П р о д о л ж а е м д е й с т в о в а т ь т а к и м о б р а з о м д о тех
п о р , п о к а не п о л у ч и м д в е о т с о р т и р о в а н н ы е ч а с т и м а с с и
ва, которые после слияния и дадут упорядоченный
массив.
Алгоритм сортировки с л и я н и я м и т а к ж е имеет н а з в а
ние а л г о р и т м а фон Н е й м а н а .
Алгоритм метода запишите самостоятельно.
Алгоритм сортировки слияниями требует порядка
N\og N
2 операций сравнения и столько же перестановок
элементов. Данный алгоритм является самым быстрым
из всех р а с с м о т р е н н ы х в ы ш е а л г о р и т м о в с о р т и р о в о к
(проверьте!).
Р а с с м о т р и м р а б о т у а л г о р и т м а н а п р и м е р е м а с с и в а 1,
9, 2, 4, 3, 6, 5, 0, 7, 11, 8. ( С о р т и р у е м м а с с и в в п о р я д к е
убывания.)
1. UA, 2 ^ 4 , 3 J 5 , 5 J ) , 7, 11, 8
2. 9, 1, 4, 2, 6, 3, 5, 0, 11, 7, 8
9, 4, 2, 1, 6, 5, 3, 0, 11, 8, 7
9, 6, 5, 4, 3, 2, 1, 0, 11, 8, 7
5. 11, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
1. Д а н л и н е й н ы й м а с с и в Л[1..ЛГ], с о д е р ж а щ и й ц е л ы е
числа. Определить:
а ) и м е е т с я л и в м а с с и в е хотя б ы одно ч и с л о с у к а
занными ниже свойствами;
б) п о с ч и т а т ь к о л и ч е с т в о ч и с е л , к о т о р ы е
1) я в л я ю т с я п о л о ж и т е л ь н ы м и ;
2) я в л я ю т с я н е ч е т н ы м и ;
3) о т л и ч н ы от А (К); К в в о д и т с я ;
4) д е л я т с я на 3 и на 5;
5) д е л я т с я на 7 и не д е л я т с я на 4;
6) п р и д е л е н и и н а 3 и н а 5 д а ю т о д и н а к о в ы е
остатки;
7) п р и д е л е н и и на 7 д а ю т в о с т а т к е 1, 2 или 3;
8) я в л я ю т с я к в а д р а т о м ц е л о г о ч и с л а ;
9) я в л я ю т с я с т е п е н ь ю 5.
85
2. Д а н л и н е й н ы й м а с с и в A [I..N], с о д е р ж а щ и й ц е л ы е
числа. Определить, сколько в нем соседств
1) д в у х п о л о ж и т е л ь н ы х ч и с е л ;
2) д в у х р а з н ы х ч и с е л ;
3) д в у х н е ч е т н ы х ч и с е л ;
4) д в у х н у л е в ы х э л е м е н т о в ;
5) д в у х чисел одного з н а к а , п р и ч е м м о д у л ь п е р в о
го д о л ж е н б ы т ь б о л ь ш е м о д у л я в т о р о г о ;
6) т р е х у п о р я д о ч е н н ы х по н е у б ы в а н и ю ч и с е л .
3. Д а н л и н е й н ы й м а с с и в A[l..N], содержащий целые
числа. Получить те элементы массива, индексы которого
являются
1) с т е п е н я м и д в о й к и ;
2) п о л н ы м и к в а д р а т а м и ;
3) ч и с л а м и Ф и б о н а ч ч и .
4. Д а н л и н е й н ы й м а с с и в A [I..N], с о д е р ж а щ и й ц е л ы е
числа.
1) О п р е д е л и т ь , с к о л ь к о р а з в с т р е ч а е т с я м а к с и м а л ь
ный э л е м е н т в э т о м м а с с и в е .
2) П о л у ч и т ь те э л е м е н т ы м а с с и в а , к о т о р ы е н а х о д я т с я
между минимальным и максимальным.
3) Н а й т и д л и н у н а и м е н ь ш е г о о т р е з к а ч и с л о в о й п р я
мой, с о д е р ж а щ е г о все э л е м е н т ы м а с с и в а .
4) Н а й т и м и н и м а л ь н ы й , м а к с и м а л ь н ы й , н а и м е н ь ш и й
больше минимального, наибольший меньше мак
с и м а л ь н о г о з а один п р о с м о т р м а с с и в а .
5. Д а н л и н е й н ы й м а с с и в A[l..N], содержащий целые
ч и с л а . П о с ч и т а т ь в нем
1) н а и б о л ь ш е е к о л и ч е с т в о о д и н а к о в ы х ч и с е л ;
2) к о л и ч е с т в о р а з л и ч н ы х ч и с е л .
6. П р и п о с т у п л е н и и в и н с т и т у т л и ц а , п о л у ч и в ш и е
д в о й к у на п е р в о м э к з а м е н е , ко в т о р о м у не д о п у
с к а ю т с я . С ч и т а я ф а м и л и и а б и т у р и е н т о в и их о ц е н к и
после первого экзамена исходными данными, составить
с п и с о к а б и т у р и е н т о в , д о п у щ е н н ы х ко в т о р о м у э к з а м е н у .
7. Д а н п р я м о у г о л ь н ы й м а с с и в A [l.JW, I..N]. Полу
чить н о м е р
86
1) столбца, содержащего максимальный элемент;
2) с т р о к и , с о д е р ж а щ е й м и н и м а л ь н ы й э л е м е н т ;
3) с т о л б ц а , с у м м а э л е м е н т о в к о т о р о г о м а к с и м а л ь н а ;
4) с т р о к и , с у м м а э л е м е н т о в к о т о р о й м и н и м а л ь н а .
8. Д а н п р я м о у г о л ь н ы й м а с с и в A [l..Af, I..N]. П о л у
чить н о м е р а
1) с т р о к , в к о т о р ы х есть р а в н ы е э л е м е н т ы ;
2) с т р о к , с у м м ы э л е м е н т о в в к о т о р ы х р а в н ы .
9. Д а н п р я м о у г о л ь н ы й м а с с и в А [\..М, I..N]. П о л у
чить л и н е й н ы й м а с с и в В, в к о т о р о м
1) B[i] — м а к с и м а л ь н ы й э л е м е н т /-Й с т р о к и м а с с и в а
A (i и з м е н я е т с я от 1 до М);
2) В [i] — м и н и м а л ь н ы й э л е м е н т г-го с т о л б ц а м а с с и в а
A (i и з м е н я е т с я от 1 до N).
10. Д а н л и н е й н ы й м а с с и в A [1..N], с о д е р ж а щ и й ц е л ы е
ч и с л а . О т с о р т и р о в а т ь его
1 ) методом «пузырька» в порядке возрастания;
2) м е т о д о м « п у з ы р ь к а » в п о р я д к е в о з р а с т а н и я мо
дулей;
3) м е т о д о м в ы б о р а , п р и п о м о щ и поиска м и н и м а л ь
ного э л е м е н т а в п о р я д к е в о з р а с т а н и я ;
4) м е т о д о м в ы б о р а п р и п о м о щ и п о и с к а о д н о в р е м е н
но м и н и м а л ь н о г о и м а к с и м а л ь н о г о э л е м е н т о в в по
рядке возрастания;
5) п е р е с т а в и в все н у л е в ы е э л е м е н т ы в к о н е ц м а с с и
ва; порядок ненулевых — произвольный;
6) т а к , чтобы все ч е т н ы е э л е м е н т ы с т о я л и в н а ч а л е
массива, а нечетные — в конце;
7) т а к , ч т о б ы все п о л о ж и т е л ь н ы е э л е м е н т ы с т о я л и
в начале массива, отрицательные — в середине,
а нули — в конце;
8 ) т а к , чтобы все п о л о ж и т е л ь н ы е э л е м е н т ы с т о я л и
в начале массива, а отрицательные — в конце
(относительный порядок следования элементоз
должен сохраниться);
9) в п о р я д к е в о з р а с т а н и я к о л и ч е с т в а ц и ф р в ч и с л а х ,
входящих в массив (сначала однозначные, затем
87
д в у з н а ч н ы е и т. д.); п о р я д о к р а с п о л о ж е н и я ч и с е л
с одинаковым количеством цифр должен сохра
ниться неизменным;
10) в п о р я д к е в о з р а с т а н и я к о л и ч е с т в а ц и ф р в ч и с л а х ,
входящих в массив (сначала однозначные, затем
д в у з н а ч н ы е и т. д.); ч и с л а с о д и н а к о в ы м к о л и
чеством ц и ф р р а с п о л а г а ю т с я в п о р я д к е у б ы
вания.
11. И м е ю т с я в е с ы б е з г и р ь и ч е т ы р е р а з л и ч н ы х гру
з а . Н а к а ж д у ю из д в у х ч а ш е к в е с о в м о ж н о к л а с т ь
по о д н о м у г р у з у . Р а з л о ж и т ь г р у з ы по убыванию
массы, использовав пять взвешиваний.
12. Д а н п р я м о у г о л ь н ы й м а с с и в Л [ 1 . . М , I..N]. П о л у
чить н о м е р а
1) с т р о к , э л е м е н т ы к о т о р ы х р а с п о л о ж е н ы в в о з р а с т а
ющем порядке;
2) с т о л б ц о в , э л е м е н т ы к о т о р ы х р а с п о л о ж е н ы в у б ы
вающем порядке;
3) с т о л б ц о в , э л е м е н т ы к о т о р ы х я в л я ю т с я ч а с т ь ю по
следовательности Фибоначчи;
4) с т р о к , э л е м е н т ы к о т о р ы х я в л я ю т с я п о с л е д о в а т е л ь
ными степенями двойки.
13. Ф а м и л и и у ч а с т н и к о в с о р е в н о в а н и й по ф и г у р н о м у
к а т а н и ю п о с л е к о р о т к о й п р о г р а м м ы р а с п о л о ж е н ы в по
р я д к е , с о о т в е т с т в у ю щ е м з а н я т о м у месту. С о с т а в и т ь спи
сок с т а р т о в ы х н о м е р о в у ч а с т н и к о в д л я п р о и з в о л ь н о й
программы (участники выступают в порядке, обратном
занятым местам).
14. Д а н о т с о р т и р о в а н н ы й в п о р я д к е в о з р а с т а н и я л и
н е й н ы й м а с с и в Л[1..ЛГ].
1) О п р е д е л и т ь , и м е е т с я л и в д а н н о м м а с с и в е число,
равное среднему арифметическому элементов мас
сива.
2) В с т а в и т ь в д а н н ы й м а с с и в н е к о т о р о е ч и с л о X т а к ,
чтобы упорядоченность массива сохранилась.
15. Т а б л и ц а в ы и г р ы ш е й л о т е р е и п р е д с т а в л е н а в в и д е
д в у х м а с с и в о в A [I..N] и C[\..N]. В м а с с и в е А, у п о р я д о -
88
ч е н н о м по у б ы в а н и ю , х р а н я т с я в ы и г р ы ш н ы е н о м е р а ,
а в м а с с и в е С — в ы и г р ы ш и в р у б л я х , в ы п а в ш и е со
о т в е т с т в е н н о на н о м е р а Л [1], Л [2], Л [Щ. Т р е б у е т с я
н а й т и в ы и г р ы ш и , в ы п а в ш и е на р я д н о м е р о в , х р а н я щ и х с я
в м а с с и в е В[1..М] ( е с л и н о м е р а нет в т а б л и ц е , в ы и г р ы ш
считается р а в н ы м нулю).
16. З а д а н ы м а с с и в ы Л [1.JV] и В [1..М]. М а с с и в Л у п о
р я д о ч е н по у б ы в а н и ю . П о д с ч и т а т ь к о л и ч е с т в о тех В [i],
l ^ i ^ M , д л я к о т о р ы х нет р а в н ы х с р е д и э л е м е н т о в
массива Л.
17. З а д а н м а с с и в Л [1..ЛП,. П о л у ч и т ь в п о р я д к е в о з р а
с т а н и я в с е р а з л и ч н ы е ч и с л а , в х о д я щ и е в м а с с и в А.
18. Л ы ж н ы е г о н к и п р о в о д я т с я д в у м я г р у п п а м и по 10
человек. Р е з у л ь т а т ы соревнований представлены спис
к а м и у ч а с т н и к о в по к а ж д о й г р у п п е , в п о р я д к е з а н я т ы х
ими мест. Необходимо получить общий список, в котором
участники расположены в порядке, соответствующем
показанным результатам.
19. С о р е в н о в а н и я по п л а в а н и ю п р о в о д я т с я о т д е л ь н о
в Е в р о п е и А м е р и к е . Р е з у л ь т а т ы 100 л у ч ш и х с п о р т с м е
нов к а ж д о г о континента представлены в виде таблиц,
с о д е р ж а щ и х в порядке з а н я т ы х мест ф а м и л и и спортсме
н о в и их р е з у л ь т а т ы . С о с т а в и т ь с п и с о к 100 л у ч ш и х
спортсменов мира в порядке, определяемом результа
тами.
20. В п а м я т и Э В М х р а н и т с я с п и с о к ф а м и л и й а б о
н е н т о в в а л ф а в и т н о м п о р я д к е и н о м е р а их т е л е ф о н о в .
Составить программу, обеспечивающую быстрый поиск
а б о н е н т а по н о м е р у т е л е ф о н а .
21. В памяти Э В М хранятся списки номеров телефо
нов и ф а м и л и й а б о н е н т о в , у п о р я д о ч е н н ы е по н о м е р а м
т е л е ф о н о в , д л я к а ж д о г о из п я т и т е л е ф о н н ы х у з л о в горо
д а . Один телефонный узел включает несколько АТС (не
б о л е е 10). Н о м е р а А Т С ( п е р в ы е д в е ц и ф р ы н о м е р а
телефона), относящиеся к каждому телефонному узлу,
т а к ж е хранятся в упорядоченном виде в памяти ЭВМ.
Составить программу, обеспечивающую быстрый поиск
ф а м и л и и а б о н е н т а по з а д а н н о м у н о м е р у т е л е ф о н а .
89
2 2 . Д а н ы N монет, с р е д и к о т о р ы х о д н а ф а л ь ш и в а я .
О п р е д е л и т ь ф а л ь ш и в у ю монету с помощью чашечных
весов б е з г и р ь за м и н и м а л ь н о е к о л и ч е с т в о в з в е ш и в а н и й ,
если ф а л ь ш и в а я м о н е т а
1) т я ж е л е е о с т а л ь н ы х ;
2) л е г ч е о с т а л ь н ы х ;
3) о т л и ч а е т с я от о с т а л ь н ы х по м а с с е и п р и этом не
и з в е с т н о — т я ж е л е е о н а или л е г ч е н а с т о я щ е й мо
неты.
2 3 . Н е к т о з а д у м а л ч и с л о из п р о м е ж у т к а [0, 100]. О н
м о ж е т п р а в д и в о о т в е ч а т ь « д а » или «нет» на з а д а в а е м ы е
ему вопросы. К а к и е вопросы нужно з а д а в а т ь , чтобы
о т г а д а т ь з а д у м а н н о е число за минимальное количество
попыток.
Н а й т и и н д е к с ы (/, / ) э л е м е н т а м а с с и в а , р а в н о г о з а
д а н н о м у ч и с л у X, или н а п е ч а т а т ь с л о в о «нет», е с л и
т а к о г о э л е м е н т а не о к а ж е т с я .
2. З а д а н м а с с и в A[l..N, I..N], э л е м е н т ы к о т о р о г о
р а в н ы 0 или 1, п р и ч е м Л [i, i] = 0 д л я л ю б о г о и Н е о б х о д и
мо н а й т и , е с л и они есть, т а к и е с т р о к у ц и с т о л б е ц / , 0
ч т о б ы в с т о л б ц е / б ы л и все 0, а в с т р о к е i — все 1 ( к р о
0 0
ме э л е м е н т а A [i , i ], р а в н о г о 0).
0 0
3. Н а п л о с к о с т и с в о и м и к о о р д и н а т а м и з а д а е т с я в ы
п у к л ы й iV-угольник. К о о р д и н а т ы iV-угольника ц е л о ч и с -
л е н н ы и п е р е ч и с л я ю т с я в п о р я д к е о б х о д а по к о н т у р у .
В в о д я т с я к о о р д и н а т ы т о ч к и (х; у). О п р е д е л и т ь
а) является ли она вершиной ^ - у г о л ь н и к а ;
б) п р и н а д л е ж и т л и она iV-угольнику.
4 . Н а к а ж д о й из д в у х п а р а л л е л ь н ы х п р я м ы х с л е в а
н а п р а в о з а д а н ы по N точек ( р и с . 28).
90
Их координаты хранятся в
массивах А и В [I..N].
Точки с одинаковыми номе
рами соединены отрезками.
Т а к и м образом, полоса меж
д у п р я м ы м и р а з б и в а е т с я на Рис. 28
N — 1 конечную и 2 беско
нечные трапеции. Расстояние м е ж д у п р я м ы м и единич
ное. В в о д и т с я т о ч к а (х; у), 0 < г у < 1. О п р е д е л и т ь , в к а к о й
из т р а п е ц и й л е ж и т т о ч к а .
5. В в о д и т с я п о с л е д о в а т е л ь н о с т ь из N н а т у р а л ь н ы х
ч и с е л . О п р е д е л и т ь н а и м е н ь ш е е н а т у р а л ь н о е ч и с л о , от
сутствующее в последовательности.
6. Н а д л и н н о й п е р ф о л е н т е з а п и с а н ы N п о п а р н о р а з
личных положительных целых чисел. В а ш а Э В М может
п е р е м а т ы в а т ь л е н т у на н а ч а л о и с ч и т ы в а т ь ч и с л а одно
за другим. Внутренняя память Э В М может хранить
только несколько целых чисел. Требуется найти наимень
ш е е п о л о ж и т е л ь н о е ц е л о е ч и с л о , к о т о р о г о нет на л е н т е .
Опишите алгоритм, который сделает это за небольшое
количество перемоток ленты.
7. Н а с т о л е в д в у х с т о л б и к а х л е ж а т 64 з о л о т ы е
и 64 серебряные монеты соответственно. К а к серебря
н ы е , т а к и з о л о т ы е м о н е т ы у п о р я д о ч е н ы по у б ы в а н и ю
м а с с ( с а м а я т я ж е л а я — вверху, с а м а я л е г к а я — внизу).
М а с с ы всех монет р а з н ы е . К а к о е н а и м е н ь ш е е к о л и ч е с т в о
в з в е ш и в а н и й н е о б х о д и м о д л я о п р е д е л е н и я 64-й м о н е т ы
в п о р я д к е у б ы в а н и я м а с с с р е д и всех 128 монет? ( З а один
р а з можно взвешивать две монеты.)
8. З а д а н о N н а б о р о в монет и з р а з л и ч н ы х с т р а н .
Н а б о р ы у п о р я д о ч е н ы по н е в о з р а с т а н и ю м а с с ы монет.
В 1-м н а б о р е а, м о н е т . О п р е д е л и т ь з а к а к м о ж н о м е н ь ш е е
ч и с л о в з в е ш и в а н и й на ч а ш е ч н ы х в е с а х k-ю по м а с с е
м о н е т у с р е д и всех монет.
9. З а д а н ы м а с с и в ы A[l..N] и В[1..М]. Найти такие
и н д е к с ы i и / , что
0 0
91
10. Р е ш и т ь у р а в н е н и е f(x) = 0 на п р о м е ж у т к е [а, Ь],
на к о т о р о м ф у н к ц и я f(х) я в л я е т с я монотонной и н е п р е
рывной. Корень найти с точностью п знаков после за
пятой.
11. В р о м а н е N г л а в . В г'-й г л а в е а, с т р а н и ц . Т р е б у
ется издать роман в К томах так, чтобы объем самого
толстого тома был минимален. Описать алгоритм, отве
ч а ю щ и й на в о п р о с , к а к и м б у д е т о б ъ е м V с а м о г о т о л с т о г о
тома. Делить и переставлять главы нельзя.
12. И м е е т с я N к а м н е й м а с с о й Л , , Л , 2 A . Необхо
N
д и м о р а з б и т ь их на д в е кучи т а к и м о б р а з о м , чтобы
м а с с ы куч о т л и ч а л и с ь не б о л е е чем в 2 р а з а . В ы д а т ь
с о о б щ е н и е , е с л и этого с д е л а т ь н е л ь з я .
13. У с л о в и е з а д а ч и 12, т о л ь к о м а с с ы куч о т л и ч а ю т с я
не б о л е е чем в 1,5 р а з а .
14. Д а н ы д в е ц е л о ч и с л е н н ы е т а б л и ц ы Л [ 1 . . 1 0 ] и
В[1..15]. Р а з р а б о т а т ь алгоритм и написать программу,
к о т о р а я п р о в е р я е т , я в л я ю т с я л и эти т а б л и ц ы п о х о ж и м и .
( Д в е таблицы называются похожими, если совпадают
множества чисел, встречающихся в этих таблицах.)
15. З а д а е т с я с л о в а р ь . Н а й т и в нем все а н а г р а м м ы
( с л о в а , с о с т а в л е н н ы е из одних и тех ж е б у к в ) .
16. Н а п р я м о й о к р а с и л и N о т р е з к о в . И з в е с т н ы коор
д и н а т а L [i] л е в о г о к о н ц а и к о о р д и н а т а R[i] п р а в о г о
к о н ц а i-ro о т р е з к а д л я ( = 1, N. Н а й т и с у м м у д л и н
всех о к р а ш е н н ы х ч а с т е й п р я м о й .
М о д и ф и к а ц и я . Н а о к р у ж н о с т и о к р а с и л и N дуг.
И з в е с т н ы у г л о в а я к о о р д и н а т а L [г] н а ч а л а и R [i] к о н ц а
/'-й дуги (от н а ч а л а к к о н ц у д в и г а л и с ь , з а к р а ш и в а я дугу,
против часовой стрелки). К а к а я доля окружности окра
шена?
17. И м е е т с я 2N чисел. И з в е с т н о , что их м о ж н о р а з
б и т ь на п а р ы т а к и м о б р а з о м , что п р о и з в е д е н и е чисел
92
в парах равны. Сделать разбиение, если числа: а) нату
ральные; б) целые.
18. И м е ю т с я ч и с л а Л ] , А ,2 и В, В,
х 2 В^.
С о с т а в и т ь из них N п а р (Л,-, В/) т а к и м о б р а з о м , ч т о б ы
сумма произведений пар была максимальна (минималь
н а ) . К а ж д о е Л,- й В в п а р а х в с т р е ч а ю т с я р о в н о по о д н о м у
;
разу.
19. У п о р я д о ч и т ь по н е в о з р а с т а н и ю 5 чисел з а 7 опе
раций сравнения.
20. П у с т ь Л — м н о ж е с т в о и з N н а т у р а л ь н ы х ч и с е л .
В а ш а п р о г р а м м а д о л ж н а о п р е д е л и т ь , с у щ е с т в у е т л и по
к р а й н е й м е р е одно п о д м н о ж е с т в о В м н о ж е с т в а Л , у д о в
л е т в о р я ю щ е е с л е д у ю щ и м у с л о в и я м д л я л ю б ы х X, Y, Z из
В {ХфЧфЪфХ):
Z + Y + Z < S U M { * : * из В\{Х, Y, Z}}, (*)
г д е В\{Х, Y, Z} о з н а ч а е т м н о ж е с т в о В б е з э л е м е н т о в X,
Y и Z, S U M — с у м м а э л е м е н т о в с о о т в е т с т в у ю щ е г о мно
жества.
В случае положительного ответа программа д о л ж н а
н а й т и п о д м н о ж е с т в о В, у д о в л е т в о р я ю щ е е у с л о в и ю (*)
и с о с т о я щ е е из м а к с и м а л ь н о в о з м о ж н о г о числа эле
ментов.
21. Д а н о положительное целое число К я К целых
чисел Л,, А . Вычислить значение суммы
к S(M, N) —
= A -\-A
M M+l + ...+A _ N + A , где 1 < M < N
x N < / T :
а) наибольшее;
б) н а и м е н ь ш е е ;
в) н а и б о л е е б л и з к о е к н у л ю ;
г) н а и б о л е е б л и з к о е к з а д а н н о м у ч и с л у Р.
П р и м е ч а н и е . Число К столь велико, что числа А А , А и 2 к
времени.
1. Ч е м у б у д у т р а в н ы х х и хъ е с л и : a ) x , = = P ( l . О, 2. 0),
б) x = P ( 3 . 0, 4. 0)?
2
А л г в е щ Р ( в е щ а, Ь)
нач вещ с
с : = (Ь — а ) / 3 + а
е с л и A B S (Ь — а ) < 0 . 0 0 0 1
| то з н а ч : = с
иначе
если s i n ( a ) * s i n ( c ) < ; 0
| то з н а ч : = Р ( а , с)
иначе
| з н а ч : = Р ( с , Ь)
все
все
кон
2. О п р е д е л и т ь , м о ж н о л и п р е д с т а в и т ь з а д а н н о е н а т у
ральное число в виде произведения четырех последова
т е л ь н ы х н а т у р а л ь н ы х ч и с е л . Д л и н а числ,а не б о л е е
250 с и м в о л о в . К о н е ц ч и с л а — п р о б е л .
3. Написать программу, которая в двумерном мас
с и в е A[l..N, 1..М] ц е л ы х ч и с е л , т а к о м , что д л я всех
1 < л ^ i V , l ^ / ^ A f — 1 в ы п о л н я е т с я A [i, j\>A [i,/+ 1] и
д л я всех 1 N — 1 в ы п о л н я е т с я A [i, М]>А [j-f- 1, М],
н а х о д и т все э л е м е н т ы A[i, / ] , р а в н ы е / + "'> или у с т а
н а в л и в а е т , что т а к и х э л е м е н т о в нет.
4. Н а п и с а т ь п р о г р а м м у , к о т о р а я в д в у м е р н о м м а с
с и в е Л [I..N, 1..М] ц е л ы х ч и с е л , т а к о м , что д л я всех
94
1 s^isS^Af, 1 / < : Af — 1 в ы п о л н я е т с я A [i, / ] < Л [i, / - j - 1 ] и
д л я всех 1 ^ i ^ / V — 1 в ы п о л н я е т с я A [i, M]<A [i+l, M],
н а х о д и т в с е э л е м е н т ы A [i, j], р а в н ы е / + г, или у с т а
н а в л и в а е т , ч т о т а к и х э л е м е н т о в нет.
5. Н а п р я м о й с в о и м и к о н ц а м и з а д а н ы JV о т р е з к о в
и т о ч к а X. О п р е д е л и т ь , п р и н а д л е ж и т л и т о ч к а м е ж о т р е -
з о ч н о м у и н т е р в а л у . Е с л и д а , то у к а з а т ь к о н ц е в ы е т о ч к и
э т о г о и н т е р в а л а . Е с л и нет, то н а й т и : а ) к а к о м у к о л и ч е
ству отрезков п р и н а д л е ж и т точка; б) каким именно
отрезкам принадлежит точка?
6. Н а п р я м о й с в о и м и к о н ц а м и з а д а н ы N о т р е з к о в .
Н а й т и т о ч к у , п р и н а д л е ж а щ у ю м а к с и м а л ь н о м у ч и с л у от
резков.
7. П у с т ь F (х) — п р о ц е д у р а , в ы ч и с л я ю щ а я з н а ч е н и е
н е п р е р ы в н о й ф у н к ц и и , к о т о р а я о п р е д е л е н а н а всей д е й
с т в и т е л ь н о й оси. Э т а ф у н к ц и я у б ы в а е т п р и всех х м е н ь
ш е н е к о т о р о г о ч и с л а х и в о з р а с т а е т п р и всех х б о л ь ш е
0
х . С о с т а в и т ь а л г о р и т м , к о т о р ы й о п р е д е л я е т х с точ
0 0
п равных частей:
\BD \
X — |D,D I 2 =•- = Ш - я А - П = IA,-iC|.
К а ж д а я из т о ч е к Д ( l ^ i ^ r a — 1) с о е д и н е н а о т р е з к о м
с в е р ш и н о й Л т а к и м о б р а з о м , что п о л у ч е н н ы е о т р е з к и
р а з д е л я ю т у г о л ВАС н а п ч а с т е й :
Д л я введенных а (в г р а д у с а х ) и п о п р е д е л и т ь k (1 < ! й г ^ п ) ,
д л я к о т о р о г о з н а ч е н и е в ы р а ж е н и я \а — а/п\ б у д е т н а и
к
меньшим.
9. В т р е у г о л ь н о м к о р о л е в с т в е , р а с п о л о ж е н н о м м е ж д у
т р е м я п и р а м и д а м и , где-то под п ы л ь ю столетий с п р я т а н
вход в г р о б н и ц у ф а р а о н а Т у т р а м з е с а . М н о г и е к л а д о -
95
и с к а т е л и о т п р а в л я л и с ь в д о р о г у , ч т о б ы н а й т и вход
в гробницу и обнаружить несметные сокровища.
Напрасно! Проклятие фараона гласило: как только
к л а д о и с к а т е л ь п о п а д а е т в т р е у г о л ь н о е к о р о л е в с т в о , он
должен двигаться только прямолинейно в направлении
к в е р ш и н е одной из п и р а м и д . П р и э т о м , п р е о д о л е в
п о л о в и н у пути, он д о л ж е н н е к о т о р о е в р е м я о т д о х н у т ь
и з а т е м с н о в а о т п р а в и т ь с я в п у т ь по н а п р а в л е н и ю к к а
к о й - н и б у д ь из т р е х п и р а м и д . К а ж д ы й р а з н а п р а в л е н и е
в ы б и р а е т с я с л у ч а й н ы м о б р а з о м . С у щ е с т в у е т ли в т р е
угольном королевстве точка, в которую кладоискатель
н и к о г д а не с м о ж е т п о п а с т ь ? Е с л и д а , то вход в г р о б н и ц у
останется навсегда скрытым и фараон навеки будет
о с т а в л е н в покое.
Написать программу для кладоискателя, показываю
щ у ю на э к р а н е т о л ь к о точки о с т а н о в к и п у т н и к а . ( З а д а
ются координаты трех угловых точек треугольного коро
левства и начальное положение кладоискателя.)
П о л у ч и т ь к а к м и н и м у м 5 г р а ф и к о в . О д и н из них
д о л ж е н б ы т ь д л я с л е д у ю щ и х н а ч а л ь н ы х у с л о в и й : на
ч а л ь н а я точка и три вершины л е ж а т в 4 углах экрана;
п р о д е л а т ь 5000 и т е р а ц и й .
10. П р е д п о л о ж и м , что и м е е т с я н е к о т о р ы й к у с о к л е н
ты, р а з д е л е н н ы й на к а д р ы . К а д р ы з а н у м е р о в а н ы с д в у х
сторон. П о л о с к а л е н т ы с к л е е н а в л и с т М е б и у с а . Н е о б х о
д и м о с о с т а в и т ь а л г о р и т м у п о р я д о ч е н и я этой п о с л е д о в а
т е л ь н о с т и , п р е д п о л о ж и в , что с о с е д н и е к а д р ы м о ж н о п е р е
ставлять (естественно, в упорядоченной последователь
ности б у д е т один « с к а ч о к » от м и н и м а л ь н о г о э л е м е н т а
к м а к с и м а л ь н о м у ) . С л е д у е т у ч е с т ь , что при п е р е с т а н о в к е
к а д р о в п е р е с т а в л я ю т с я ч и с л а с обеих с т о р о н к а д р о в .
Н а п р и м е р : есть 2 к а д р а , А ь В, — одна сторона к а д
ров, А В — д р у г а я . П у с т ь А = 1, А — 2, В = 7, В = 3.
ъ 2 { 2 { 2
Т о г д а п о с л е п е р е с т а н о в к и с о д е р ж и м о г о А и В б у д е т А, =
= 7, Л = 3, Д, = 1, В = 2.
2 2
96
11. И м е е т с я N ч е л о в е к и ц е л ы е ч и с л а А и A.N
М о ж е т л и ч и с л о з н а к о м ы х i-ro ч е л о в е к а в этой г р у п п е
р а в н я т ь с я Л,?
12. У с л о в и е з а д а ч и 11. У к а з а т ь один из в о з м о ж н ы х
вариантов знакомств.
13. З а д а н о с е м е й с т в о м н о ж е с т в б у к в . Н а й т и т а к о е
м а к с и м а л ь н о е k, д л я к о т о р о г о м о ж н о п о с т р о и т ь мно
ж е с т в о , с о с т о я щ е е из k б у к в , п р и ч е м к а ж д а я из них
п р и н а д л е ж и т ровно k множествам з а д а н н о г о семейства.
14. В м у з е е р е г и с т р и р у е т с я в т е ч е н и е д н я в р е м я
прихода и ухода к а ж д о г о посетителя. Таким образом за
д е н ь п о л у ч е н ы N п а р з н а ч е н и й , где п е р в о е з н а ч е н и е
в паре показывает время прихода посетителя, а второе
з н а ч е н и е — в р е м я его у х о д а . Н а й т и п р о м е ж у т о к в р е м е
ни, в т е ч е н и е к о т о р о г о в м у з е е о д н о в р е м е н н о н а х о д и л о с ь
м а к с и м а л ь н о е число посетителей.
15. З а д а е т с я ч и с л о п> 1, к о т о р о е о п р е д е л я е т р а з м е р
ность пространства и р а з м е р ы М «-мерных п а р а л л е л е п и
п е д о в (а,,, a ), / = 1 ,
in М. П а р а л л е л е п и п е д м о ж е т
р а с п о л а г а т ь с я в п р о с т р а н с т в е л ю б ы м из с п о с о б о в , п р и
к о т о р ы х его р е б р а п а р а л л е л ь н ы о с я м к о о р д и н а т . Н а й т и
максимальную последовательность вкладываемых друг
в друга параллелепипедов.
16. П о с т р о и т ь м а к с и м а л ь н о е м н о ж е с т в о , с о с т о я щ е е
из п о п а р н о не с р а в н и м ы х в е к т о р о в у. В е к т о р ы v о п р е д е
л я ю т с я п а р а м и ч и с е л , в ы б и р а е м ы х из д а н н о й п о с л е
д о в а т е л ь н о с т и чисел а ь па , п~^-\. Д в а вектора
v — (a, b) и v' = (a', b') н а з ы в а ю т с я с р а в н и м ы м и , е с л и
a^La' и b^.b' или а^а' и b^b ,
r
в противном случае —
несравнимыми.
17. П у с т ь г р у п п а состоит из N ч е л о в е к . Н а з о в е м
о д н о г о из э т и х л ю д е й з н а м е н и т о с т ь ю , е с л и он не з н а е т
н и к о г о из о с т а в ш и х с я , а его з н а ю т все. З а д а ч а с о с т о и т
в т о м , ч т о б ы в этой г р у п п е о п р е д е л и т ь з н а м е н и т о с т ь
( е с л и о н а т а м есть). П р и э т о м р а з р е ш а е т с я з а д а в а т ь
т о л ь к о в о п р о с ы в и д а : « И з в и н и т е , з н а е т е л и В ы вон того
ч е л о в е к а ? » ( П р е д п о л а г а е т с я , что все о т в е т ы п р а в д и в ы ,
УКАЗАНИЯ К Р Е Ш Е Н И Ю ЗАДАЧ
ПОВЫШЕННОЙ СЛОЖНОСТИ
1. Д л я р е ш е н и я з а д а ч и н е о б х о д и м о с р а в н и т ь ч и с л о
X с э л е м е н т а м и м а с с и в а . Е с л и с р а в н и в а т ь X со всеми
э л е м е н т а м и м а с с и в а А, к о л и ч е с т в о о п е р а ц и й с р а в н е н и я
равно M-N.
Существенно сократить количество сравнений можно,
если р а с с м а т р и в а т ь первую строку и последний столбец
м а с с и в а А к а к один м а с с и в . Э л е м е н т ы в нем у п о р я д о ч е
ны по в о з р а с т а н и ю .
Р а с с м о т р и м э л е м е н т Л [ 1 , М].
Возможны следующие ситуации.
1) Х = А [ 1 , М].
98
В этом случае з а д а н н ы й элемент найден.
2) Х<А[1, М].
Т о г д а э л е м е н т а , р а в н о г о X, в с т о л б ц е с н о м е р о м М
б ы т ь не м о ж е т . П о э т о м у м о ж н о о г р а н и ч и т ь с я п о и с к о м
з а д а н н о г о э л е м е н т а в м а с с и в е А с в ы б р о ш е н н ы м М-м
столбцом.
3) Х>А[\, М].
В э т о м с л у ч а е э л е м е н т а , р а в н о г о X, в с т р о к е с н о м е
р о м 1 б ы т ь не м о ж е т . П о э т о м у в д а л ь н е й ш е м п о и с к
заданного элемента будет проводиться в массиве А без
первой строки.
Т а к и м о б р а з о м , на к а ж д о м ш а г е , п о с л е с р а в н е н и я
з а д а н н о г о э л е м е н т а X со з н а ч е н и е м э л е м е н т а из п р а в о г о
в е р х н е г о у г л а м а с с и в а , из м а с с и в а в ы б р а с ы в а е т с я л и б о
с т р о к а , л и б о с т о л б е ц . В р е з у л ь т а т е этого с у м м а р н о е
ч и с л о с т р о к и с т о л б ц о в у м е н ь ш а е т с я на 1. П о э т о м у д л я
р е ш е н и я з а д а ч и п о т р е б у е т с я не б о л е е чем JV + M с р а в
нений.
. 2. Н о м е р а с т р о к и г' и с т о л б ц а / д о л ж н ы с о в п а д а т ь ,
0 0
100
— (/ + </) div 2. О п р е д е л и м т е п е р ь п о л о ж е н и е точки
(х; у) и в е р ш и н ы с н о м е р о м / о т н о с и т е л ь н о п р я м о й ,
проходящей через вершины с номерами 1 и т . Возможны
следующие ситуации:
1) Т о ч к и л е ж а т по одну с т о р о н у от п р я м о й . В этом
с л у ч а е н а с не и н т е р е с у е т ч а с т ь к о н т у р а от в е р
ш и н ы т до в е р ш и н ы q. П о э т о м у последней
и н т е р е с у ю щ е й н а с в е р ш и н о й в к о н т у р е м о ж н о счи
т а т ь в е р ш и н у т—1. П о л а г а е м q:=m—1.
2) Т о ч к и л е ж а т по р а з н ы е с т о р о н ы от п р я м о й . В этом
с л у ч а е н а с не и н т е р е с у е т ч а с т ь к о н т у р а от в е р ш и
ны / д о в е р ш и н ы т—1. П о э т о м у п е р в о й и н т е р е с у
ющей нас вершиной в контуре можно считать
в е р ш и н у т. П о л а г а е м f:=m.
П р о ц е с с з а к а н ч и в а е т с я , к о г д а q — / = 1 (т. е. о с т а л о с ь
т о л ь к о д в е т о ч к и ) . П р о в е р к а их к о о р д и н а т на с о в п а д е н и е
с точкой (х; у) и д а е т ответ на п о с т а в л е н н ы й в з а д а ч е
вопрос.
Этот п р и м е р п о к а з ы в а е т , что м е т о д д и х о т о м и и м о ж н о
п р и м е н я т ь не т о л ь к о к ч и с л о в ы м у п о р я д о ч е н н ы м м н о ж е
ствам.
4. П р о н у м е р у е м т р а п е ц и и слева н а п р а в о от 1 до yVf1.
Л е в а я б е с к о н е ч н а я т р а п е ц и я имеет н о м е р 1, п р а
в а я — (iVf1), к о н е ч н ы е т р а п е ц и и — от 2 до N.
Простейшим решением является последовательное
о п р е д е л е н и е п о л о ж е н и я т о ч к и (х; у) о т н о с и т е л ь н о п р я
м ы х , п р о х о д я щ и х ч е р е з точки с к о о р д и н а т а м и ( Л , _ , ; 1),
0) и ( Л ; 1), ( £ , ; 0) с о о т в е т с т в е н н о , i = 2 , N .
; Воз
можны следующие ситуации.
1) Т о ч к а л е ж и т по одну сторону от п р я м ы х .
Полагаем i:=i-\-l.
2) Т о ч к а л е ж и т по р а з н ы е с т о р о н ы от п р я м ы х . Т о г д а
интересующей нас трапецией является конечная
т р а п е ц и я с и н д е к с о м i.
101
Е с л и м ы п р о а н а л и з и р о в а л и все к о н е ч н ы е т р а п е ц и и ,
а с и т у а ц и я 2) не в о з н и к л а , то т о ч к а л е ж и т в одной из
б е с к о н е ч н ы х т р а п е ц и й . П р о в е р и м , л е ж а т л и т о ч к а (х; у)
и т о ч к а из л е в о й б е с к о н е ч н о й т р а п е ц и и по одну с т о р о
ну от п р я м о й , п р о х о д я щ е й ч е р е з точки (А ; 1), (B ; 0 ) .
{ t
Е с л и д а , то т о ч к а п р и н а д л е ж и т л е в о й б е с к о н е ч н о й т р а
пеции, е с л и нет — п р а в о й .
Однако можно существенно сократить количество
операций, используя метод дихотомии.
О п р е д е л и м индексы начального и конечного номеров
интересующих н а с трапеций, среди которых будет иско
мая. Вначале индексы равны 1 и JV+ 1 соответственно.
П у с т ь на н е к о т о р о м ш а г е и н д е к с ы н а ч а л ь н о г о и ко
нечного н о м е р о в и н т е р е с у ю щ и х н а с т р а п е ц и и р а в н ы
/ и q соответственно. Вычислим индекс среднего номера
m = (/ + ? ) d i v 2.
О п р е д е л и м в з а и м н о е р а с п о л о ж е н и е т о ч к и (х; у) и точ
ки, л е ж а щ е й з а в е д о м о в л е в о й б е с к о н е ч н о й т р а п е ц и и ,
относительно прямой, проходящей через точки с коорди
н а т а м и {А ; 1), (В ; 0).
т т
102
В качестве признака «регистрации» числа i можно зано
с и т ь в t-й э л е м е н т м а с с и в а 1. П е р в о н а ч а л ь н о все ч и с л а
« н е з а р е г и с т р и р о в а н ы » — все э л е м е н т ы м а с с и в а р а в н ы 0 .
Е с л и в с е ч и с л а от 1 до N « з а р е г и с т р и р о в а н ы » , то
минимальное отсутствующее натуральное — N-\-l.
6. О ч е в и д н о , что при в в о д е N н а т у р а л ь н ы х ч и с е л по
к р а й н е й м е р е одно число из и н т е р в а л а [ 1 , N-f-1] отсутст
вует.
О п р е д е л и м начало а и конец Ь некоторого и н т е р в а л а
и н д е к с о в , к о т о р ы й н а с и н т е р е с у е т . В о з м о ж н о л и з а один
п р о с м о т р л е н т ы у с т а н о в и т ь , все л и ч и с л а из и н т е р в а л а
[а, Ь] п р и с у т с т в у ю т на л е н т е ? У ч и т ы в а я тот ф а к т , что
з а п и с а н н ы е числа р а з л и ч н ы , м о ж н о о п р е д е л и т ь , с к о л ь к о
ч и с е л , з а п и с а н н ы х на л е н т е , п о п а д а ю т в и н т е р е с у ю щ и й
нас интервал. С другой стороны, нетрудно определить
к о л и ч е с т в о н а т у р а л ь н ы х чисел на и н т е р в а л е [а, Ь] — это
(b-a+l).
А л г о р и т м состоит в с л е д у ю щ е м .
Определим значения н а ч а л а и конца интересующего
н а с и н т е р в а л а . О ч е в и д н о , что в н а ч а л е они р а в н ы
1 и IV-f 1 с о о т в е т с т в е н н о .
П у с т ь на некотором ш а г е з н а ч е н и я н а ч а л а и к о н ц а
интересующего нас интервала равны / и q соответствен
но. О п р е д е л и м и н д е к с с р е д н е г о э л е м е н т а и н т е р в а л а т —
= ( / + <?) div 2.
Н а й д е м т е п е р ь к о л и ч е с т в о э л е м е н т о в k на л е н т е ,
л е ж а щ и х в и н т е р в а л е [/, т].
Возможны следующие ситуации.
1) К о л и ч е с т в о э л е м е н т о в к<т — В этом с л у ч а е
н а с не и н т е р е с у е т и н т е р в а л от т до q, т а к к а к на
и н т е р в а л е [/, т] хотя бы о д н о ч и с л о о т с у т с т в у е т .
Поэтому интересующим нас интервалом можно
с ч и т а т ь [/, т\. П о э т о м у п о л а г а е м q\—m.
2) К о л и ч е с т в о э л е м е н т о в k = m — / - f - 1 - В этом с л у ч а е
н а с не и н т е р е с у е т и н т е р в а л от / до т, т а к к а к на
и н т е р в а л е [/, т] в с е н а т у р а л ь н ы е ч и с л а п р и с у т с т
вуют. Таким образом, интересующим нас интерва
л о м м о ж н о с ч и т а т ь [m+l, q]. П о э т о м у п о л а г а е м
q:=m-\-\.
П р о ц е с с о к а н ч и в а е т с я , к о г д а / = <?. З н а ч е н и е / я в л я
ется искомым.
7. С о з д а д и м д в а м а с с и в а , к а ж д ы й из к о т о р ы х б у д е т
с о д е р ж а т ь м а с с ы монет из п е р в о г о и в т о р о г о с т о л б и к о в
соответственно.
О ч е в и д н о е р е ш е н и е з а д а ч и — « с л и я н и е » этих д в у х
м а с с и в о в в о б щ и й у п о р я д о ч е н н ы й м а с с и в весов и н а х о ж
д е н и е в нем 64-го по в е л и ч и н е э л е м е н т а .
Однако задачу можно решить быстрее, используя
м е т о д д и х о т о м и и . П р и этом не в о з н и к а е т н е о б х о д и м о с т и
объединять исходные массивы.
О б о з н а ч и м с о о т в е т с т в е н н о ч е р е з N и К, н а ч а л ь н ы й
t
и к о н е ч н ы й н о м е р а э л е м е н т о в в р а с с м а т р и в а е м ы х на
д а н н о м ш а г е м а с с и в а х , / = 1, 2. О п р е д е л и м н о м е р а с р е д
них э л е м е н т о в Sj = (iV;-f-/T,) div 2. Н а п е р в о м ш а г е А/, = 1,
/С, = 64, N =l, 2 /С = 64, S , = 32, S = 32. З н а ч е н и я э л е
2 2
м е н т о в , с т о я щ и х н а м е с т е S , г ' = 1 , 2, о б о з н а ч и м X и У.
;
С р а в н и в с р е д н и е э л е м е н т ы X и Y, н а й д е м б о л ь ш и й из
них. П у с т ь это X. В с и л у у п о р я д о ч е н н о с т и м а с с и в а
к а ж д ы й из э л е м е н т о в , с т о я щ и х п е р е д X, б о л ь ш е X по
величине. С другой стороны, только элементы, стоящие
п е р е д Y во в т о р о м м а с с и в е , м о г у т б ы т ь б о л ь ш е X. П о э т о
му X б о л ь ш е и с к о м о г о 64-го э л е м е н т а . С л е д о в а т е л ь н о ,
в п е р в о м м а с с и в е м о ж н о не р а с с м а т р и в а т ь п е р в ы е
32 э л е м е н т а .
А н а л о г и ч н о м о ж н о п о к а з а т ь , что э л е м е н т ы , с т о я щ и е
п о с л е Y, м о ж н о т а к ж е не р а с с м а т р и в а т ь , т а к к а к они
меньше искомого элемента. П о с л е таких действий в мас
с и в а х о с т а л о с ь по 32 э л е м е н т а , и п р и э т о м н е о б х о д и м о
н а й т и 32-й по в е л и ч и н е э л е м е н т .
Повторяем описанный выше процесс с измененными
значениями начальных N h к о н е ч н ы х К, и с р е д н и х S,
н о м е р о в э л е м е н т о в в м а с с и в а х по с л е д у ю щ е м у п р а в и л у :
если б о л ь ш и й из X и Y н а х о д я т с я в п е р в о м м а с с и в е , то
iVi = S i _ 1 , K = S , и н а ч е N = S +l,
2 2 2 2 K = S. П р о ц е с с
l i
104
з а к а н ч и в а е т с я , к о г д а в к а ж д о м м а с с и в е о с т а н е т с я по
о д н о м у э л е м е н т у . П р и этом б о л ь ш и й из них и б у д е т
искомым.
8. О ч е в и д н ы м р е ш е н и е м з а д а ч и я в л я е т с я с о з д а н и е
общего упорядоченного массива, содержащего элементы
всех и с х о д н ы х м а с с и в о в , и н а х о ж д е н и е в нем k-ro по
величине элемента.
+ l o g ( a , + a + ... + а „ ) операций.
2 2
с р е д н и х э л е м е н т о в S — (N -\-K )div2
i i i для массивов с
Ki^Nj. Найдем максимальное max и минимальное min
с р е д и з н а ч е н и й с р е д н и х э л е м е н т о в . О п р е д е л и м т а к ж е S,
д л я м а с с и в о в с Kj<Nj по п р а в и л у Sj — K r
105
N,
t S з а в е д о м о не я в л я ю т с я р е ш е н и е м и их
t
по п р а в и л у N , = 5,41 ( н а п о м н и м , что K ^N ).
t t
3) S = k.
В этом с л у ч а е м о ж н о п е р е с ч и т а т ь Kj = Sj и N = t
= S , + 1.
Процесс з а к а н ч и в а е т с я , когда начальный и ко
н е ч н ы й Kj и н д е к с ы у д о в л е т в о р я ю т у с л о в и ю Kj<.Nj для
к а ж д о г о L П р и э т о м м е н ь ш и й из э л е м е н т о в с и н д е к с а м и
Ki и б у д е т и с к о м ы м ( е с л и К, = 0, то этот э л е м е н т р а с с м а т
р и в а т ь не н у ж н о ) .
9. Д л я р е ш е н и я з а д а ч и д о с т а т о ч н о о с у щ е с т в л я т ь п р о
с м о т р э л е м е н т о в м а с с и в о в А и В, ф и к с и р у я д в е в е л и
чины:
1) п о л о ж е н и е р м а к с и м а л ь н о г о п р о с м о т р е н н о г о э л е
м е н т а из. Л;
2) з н а ч е н и е и н д е к с о в i , / д л я м а к с и м а л ь н о й н а й
0 0
П р и п р о с м о т р е о ч е р е д н о г о э л е м е н т а i из Л о п р е д е л я
ется:
м а к с и м а л ь н а я из с у м м
{A [i l + B[j ], A [p] + B[i+ 1], Л [i\ + B[i+ 1]}
0 0
денной суммы;
индекс р максимального просмотренного элемента
из Л ( п р и с р а в н е н и и з н а ч е н и й Л [р] и Л [£]).
Д е й с т в и я в ы п о л н я ю т с я д л я i от 2 д о —1.
10. Е с л и ф у н к ц и я я в л я е т с я монотонной и н е п р е р ы в
ной на п р о м е ж у т к е [а, Ь] и и м е е т на к о н ц а х п р о м е ж у т к а
з н а ч е н и я р а з н ы х з н а к о в , то о н а и м е е т на э т о м п р о м е
ж у т к е единственный корень, который можно найти мето
дом дихотомии.
Е с л и ф у н к ц и я имеет на п р о м е ж у т к е е д и н с т в е н н ы й
к о р е н ь , то з н а ч е н и я ф у н к ц и и на к о н ц а х этого п р о м е
ж у т к а и м е ю т р а з н ы е з н а к и , т.е. / ( a ) f (b)<z0. Найдем
с е р е д и н у о т р е з к а [a, b]:c = (a-{-Ь)/2. Точка с р а з д е л и т
106
н а ш п р о м е ж у т о к на д в е ч а с т и . В ы ч и с л и м з н а ч е н и е / (с).
Е с л и / ( с ) = 0 , то с — к о р е н ь у р а в н е н и я . Е с л и / ( с ) Ф 0 , то
л и б о / ( а ) / ( с ) < 0 , л и б о / ( с ) / ( 6 ) < 0 . В к а ч е с т в е нового
п р о м е ж у т к а [а, Ь] б е р е м тот, на к о н ц а х к о т о р о г о ф у н к ц и я
принимает значения разных знаков. Длина промежутка
с о к р а т и л а с ь в д в о е . Р а з д е л и м [а, Ь] п о п о л а м и из д в у х
п о л у ч е н н ы х п р о м е ж у т к о в в ы б е р е м тот, на к о н ц а х кото
рого ф у н к ц и я п р и н и м а е т з н а ч е н и я р а з н ы х з н а к о в , и т. д .
П р о ц е с с п р о д о л ж а е т с я до тех п о р , п о к а м о д у л ь з н а
чения ф у н к ц и и в н а й д е н н о й на д а н н о м ш а г е т о ч к е х не
б у д е т м е н ь ш е 1 0 ~ " ( е с л и /г = 5, то \f(x)\<0,00001).
11. П о п ы т а е м с я р а с п р е д е л и т ь г л а в ы по т о м а м р а в н о
м е р н о . Н а к а ж д ы й том п р и д е т с я не б о л е е P—TN/K~\
г л а в , где П — о к р у г л е н и е по и з б ы т к у . Т о м а с 1-го по
(К—1)-й б у д у т с о д е р ж а т ь по Р г л а в , а том с н о м е р о м
К — (N—РК) глав. Найдем максимальный объем тома
п р и т а к о м р а с п р е д е л е н и и . З а п о м н и м его в п е р е м е н н о й
high. Это б у д е т о ц е н к а м и н и м а л ь н о г о о б ъ е м а V с в е р х у .
В п е р е м е н н о й low б у д е м х р а н и т ь о ц е н к у V с н и з у .
В ы б е р е м ее к а к м а к с и м у м из д в у х в е л и ч и н : о б ъ е м а
н а и б о л ь ш е й г л а в ы и ч а с т н о г о от д е л е н и я с у м м а р н о г о
о б ъ е м а всех г л а в на к о л и ч е с т в о т о м о в (что с о о т в е т с т в у е т
и д е а л ь н о м у р а в н о м е р н о м у р а с п р е д е л е н и ю с т р а н и ц по
т о м а м ) . О б о з н а ч и м ч е р е з level п о л у с у м м у о ц е н о к с в е р х у
и снизу:
level = (low -f-high) div 2.
П о п ы т а е м с я р а с п р е д е л и т ь г л а в ы по т о м а м т а к , чтобы
о б ъ е м к а ж д о г о т о м а не п р е в о с х о д и л level. Б у д е м з а н о
с и т ь в о ч е р е д н о й том г л а в ы до тех п о р , п о к а д о б а в л е н и е
с л е д у ю щ е й г л а в ы не п р и в е д е т к п р е в ы ш е н и ю level.
П о с л е этого п е р е й д е м к ф о р м и р о в а н и ю с л е д у ю щ е г о
тома.
Е с л и н а м у д а л о с ь р а с п р е д е л и т ь все г л а в ы по т о м а м ,
то м ы н а ш л и н о в у ю о ц е н к у д л я V с в е р х у . В этом с л у ч а е
п о л а г а е м high = level.
Е с л и ж е мы с ф о р м и р о в а л и п о с л е д н и й том и п о с л е
этого о с т а л а с ь е щ е хотя бы одна г л а в а , то с м а к с и м а л ь -
107
н ы м о б ъ е м о м т о м а не б о л е е level г л а в ы р а с п р е д е л и т ь
нельзя. Требуется увеличить нижнюю оценку. Полагаем
low: — level + 1.
П о в т о р я е м э т о т п р о ц е с с до тех п о р , п о к а не с т а н е т
low^high ( т е м с а м ы м о б ъ е м и с к о м о г о т о м а V уточнен
до одной с т р а н и ц ы ) . З н а ч е н и е high и б у д е т и с к о м ы м
минимальным объемом самого толстого тома.
Применение метода дихотомии к решению данной
з а д а ч и позволяет значительно сократить перебор воз
можных вариантов.
12. О с н о в н а я с т р а т е г и я р е ш е н и я з а к л ю ч а е т с я в т о м ,
что к а ж д ы й с л е д у ю щ и й к а м е н ь к л а д е т с я в кучу с м е н ь
ш е й т е к у щ е й м а с с о й . П р и этом в п е р в у ю кучу н а д о
п о л о ж и т ь к а м е н ь м а к с и м а л ь н о й м а с с ы . П о к а ж е м , что
этого д о с т а т о ч н о , ч т о б ы г а р а н т и р о в а т ь п р а в и л ь н о е р е ш е
ние з а д а ч и . П о о к о н ч а н и и р а с п р е д е л е н и я к а м н е й по
кучам возможны 2 ситуации;
1 ) В с е к а м н и п о п а л и во в т о р у ю к у ч у , а ее м а с с а
о с т а л а с ь м е н ь ш е п о л о в и н ы м а с с ы п е р в о й кучи. П о н я т н о ,
что в этом с л у ч а е к а м н и т р е б у е м ы м о б р а з о м р а з б и т ь
н е л ь з я , с л е д о в а т е л ь н о , р е ш е н и я не с у щ е с т в у е т .
2 ) С л у ч а й 1 не в ы п о л н я е т с я . Т о г д а в о з м о ж н ы с л е д у
ющие ситуации.
а ) В с е к а м н и п о п а л и во в т о р у ю к у ч у . В этом с л у ч а е
я с н о , что м а с с ы куч о т л и ч а ю т с я не б о л е е чем на
п о л о в и н у п е р в о й кучи, е с л и м а с с а п е р в о й кучи
б о л ь ш е , и л и не б о л е е чем на м а с с у п о с л е д н е г о
к а м н я , п о л о ж е н н о г о во в т о р у ю к у ч у . - В л ю б о м из
этих случаев требуемое условие выполняется.
б) В п е р в у ю кучу п о п а л и и д р у г и е к а м н и . Т о г д а я с н о ,
что м а с с ы куч о т л и ч а ю т с я не б о л е е чем на м а с с у
самого тяжелого камня, кроме первого. Следова
тельно, и в этом случае условие з а д а ч и выполня
ется.
13. Н а н а ч а л ь н о м э т а п е в п е р в у ю кучу к л а д е т с я
с а м ы й т я ж е л ы й к а м е н ь , а во в т о р у ю — д в а с л е д у ю щ и х
108
по м а с с е к а м н я . Д л я о с т а в ш и х с я к а м н е й р е а л и з у е т с я
о п и с а н н а я д л я з а д а ч и 12 с т р а т е г и я .
14. М ы м о ж е м о т с о р т и р о в а т ь о б а м а с с и в а — и Л ,
и В ( н а п р и м е р , по н е у б ы в а н и ю ) , д а л е е , е с л и п е р в ы е
э л е м е н т ы м а с с и в о в А и В с о в п а д а ю т , то и щ е м и в Л ,
и в В м и н и м а л ь н ы е э л е м е н т ы б о л ь ш е д а н н о г о и повто
р я е м с р а в н е н и я ; е с л и ж е э л е м е н т ы не с о в п а д а ю т л и б о
о д и н из м а с с и в о в у ж е з а к о н ч и л с я , а д р у г о й е щ е нет, т о
м а с с и в ы не п о х о ж и .
{А и В у ж е о т с о р т и р о в а н ы }
i : = l; {смотрим м а с с и в ы А и В , н а ч и н а я с п е р в ы х }
j : = 1; {элементов}
w h i l e ( i < = 10) a n d ( j < ===== 15) a n d ( A [ i ] = B [ j ] ) d o
begin
e l e m e n t : = A [i];
w h i l e ( i < = 10) a n d ( A [ i ] = = e l e m e n t ) do
i : = = i + l ; {поиск н е с о в п а д а ю щ е г о э л е м е н т а }
w h i l e ( j < = = 1 5 ) a n d ( B [j]== e l e m e n t ) do
J : ======= j ——
I 1 - {поиск н е с о в п а д а ю щ е г о э л е м е н т а }
end;
if (I == 11) a n d ( j = = 1 6 ) { п р о с м о т р е л и все э л е м е н т ы
А и В}
then writeln ('Массивы похожи')
else writeln ('Массивы непохожи');
15. К а ж д о м у с л о в у п р и п и с ы в а е м н о м е р в с л о в а р е .
С н а ч а л а с о р т и р у е м б у к в ы в к а ж д о м с л о в е по ( н а п р и м е р )
неубыванию. Получаем какой-то «ключ», который совпа
д а е т у всех с л о в - а н а г р а м м ( н а п р и м е р , с л о в а « л о м »
и « м о л » п р е о б р а з у ю т с я в одни и т е ж е к л ю ч и « л м о » ) .
Д а л е е мы с о р т и р у е м к л ю ч и с л о в ( с о в м е с т н о с п р и п и
с а н н ы м и н о м е р а м и ) по н е у б ы в а н и ю . Все о д и н а к о в ы е
ключи будут р а з м е щ а т ь с я в отсортированной последова
тельности слов друг за другом. М ы просматриваем полу
ченную последовательность, ищем совпадающие ключи
и по п р и п и с а н н ы м им н о м е р а м н а х о д и м в с л о в а р е со
ответствующие слова-анаграммы.
109
16. О т с о р т и р у е м о т р е з к и в п о р я д к е н е у б ы в а н и я к о о р
динат левых концов и будем моделировать последова
т е л ь н о е их з а к р а ш и в а н и е , н а ч и н а я с с а м о г о л е в о г о от
р е з к а . Н а з о в е м з а к р а ш и в а е м ы м тот о т р е з о к , к о т о р ы й
я в л я е т с я о б ъ е д и н е н и е м одного или н е с к о л ь к и х о т р е з к о в .
К а ж д ы й р а з , к о г д а б е р е м н о в ы й о т р е з о к из у п о р я д о
ченной п о с л е д о в а т е л ь н о с т и , м ы а н а л и з и р у е м с л е д у ю щ и е
возможные ситуации.
1 ) Если новый отрезок пересекается с з а к р а ш и в а е
м ы м о т р е з к о м (его л е в а я к о о р д и н а т а не б о л ь ш е
координаты правого конца закрашиваемого отрез
к а ) , то н о в ы м п р а в ы м к о н ц о м з а к р а ш и в а е м о г о
с е й ч а с о т р е з к а с т а н о в и т с я б о л е е п р а в ы й из к о н ц о в
з а к р а ш и в а е м о г о и нового о т р е з к о в .
2) Е с л и н о в ы й о т р е з о к не п е р е с е к а е т с я с з а к р а ш и в а е
м ы м о т р е з к о м , то з а к р а с к а п р е д ы д у щ е г о о т р е з к а
з а к о н ч е н а , его д л и н а с у м м и р у е т с я с д л и н о й у ж е
закрашенной части, а з а к р а ш и в а е м ы м отрезком
становится новый отрезок.
П р о ц е с с п р о д о л ж а е т с я д о тех пор, пока не б у д у т
п р о с м о т р е н ы все о т р е з к и . П о с л е этого д л и н а п о с л е д н е г о
закрашенного отрезка суммируется с длиной ранее за
крашенной части.
17. О с н о в н а я и д е я состоит в том, ч т о б ы не и с п о л ь з о
вать операцию умножения двух чисел. Если числа нату
р а л ь н ы е , то о д н а из п а р д о л ж н а с о д е р ж а т ь м а к с и м а л ь
ное и м и н и м а л ь н о е ч и с л а . Р а с с у ж д а я т а к и м о б р а з о м д л я
оставшихся чисел, приходим к простому алгоритму. Сор
тируем числа в порядке неубывания. Тогда пары состав
ляют первое и последнее числа, второе и предпоследнее
и т. д . С и т у а ц и я н е м н о г о и з м е н я е т с я , е с л и ч и с л а ц е л ы е .
В этом случае возможны три в а р и а н т а :
1) П р о и з в е д е н и е р а в н о 0. В э т о м с л у ч а е с у щ е с т в у е т
хотя б ы N н у л е в ы х э л е м е н т о в . П о э т о м у п а р ы бу
д у т о р г а н и з о в а н ы из о д н о г о н е н у л е в о г о э л е м е н т а
и одного н у л е в о г о или из д в у х н у л е в ы х э л е м е н т о в .
110
2) П р о и з в е д е н и е п о л о ж и т е л ь н о . В этом с л у ч а е п е р е
множаются положительные числа с положитель
н ы м и , а о т р и ц а т е л ь н ы е — с о т р и ц а т е л ь н ы м и по
правилу, как и в случае с натуральными числами.
3) П р о и з в е д е н и е о т р и ц а т е л ь н о . В э т о м с л у ч а е п е р е
множается минимальное положительное число с
м и н и м а л ь н ы м о т р и ц а т е л ь н ы м и т. д .
Д л я определения ситуаций достаточно подсчитать
количество нулевых, положительных и отрицательных
элементов.
Если есть нулевые элементы, то возможен только
в а р и а н т 1). Е с л и к о л и ч е с т в о п о л о ж и т е л ь н ы х э л е м е н т о в
не р а в н о к о л и ч е с т в у о т р и ц а т е л ь н ы х , то в о з м о ж е н т о л ь к о
в а р и а н т 2). В д р у г и х с л у ч а я х в о з м о ж н а с и т у а ц и я 2) и 3 ) .
Д л я определения знака произведения рассмотрим
четыре элемента массива: максимальный положитель
ный ( п у с т ь это а), м и н и м а л ь н ы й п о л о ж и т е л ь н ы й (6),
м и н и м а л ь н ы й о т р и ц а т е л ь н ы й (с), м а к с и м а л ь н ы й о т р и ц а
т е л ь н ы й (d). П о н я т н о , что р е ш е н и е м могут б ы т ь т о л ь к о
п а р ы (а, Ь), (с, d) или ( а , d), (b, с). Е с л и аф—с, то
в с л у ч а е а>—с в паре с элементом а должен быть
м е н ь ш и й по м о д у л ю из э л е м е н т о в b и d, а е с л и а < — с,
то — б о л ь ш и й по м о д у л ю . В с л у ч а е , е с л и а== —с и Ь =
= —d, э т а ч е т в е р к а не д а е т н и к а к о й и н ф о р м а ц и и о з н а
ке п р о и з в е д е н и я , п о э т о м у м о ж н о п е р е й т и к с л е д у ю щ е й
ч е т в е р к е ч и с е л и т. д., п о к а не б у д е т у с т а н о в л е н з н а к
п р о и з в е д е н и я . Е с л и ж е п р о с м о т р е н ы все ч и с л а , а з н а к не
у с т а н о в л е н , то он м о ж е т б ы т ь к а к п л ю с , т а к и м и н у с .
18. Ч т о б ы с у м м а п р о и з в е д е н и й п а р б ы л а м а к с и м а л ь
на ( м и н и м а л ь н а ) , н е о б х о д и м о у п о р я д о ч и т ь н а б о р ы Л и В
одинаковым (различным) образом, и пары будут состав
л я т ь э л е м е н т ы , с т о я щ и е на о д и н а к о в ы х п о з и ц и я х в у п о
р я д о ч е н н ы х н а б о р а х . Это с л е д у е т из того, что е с л и а<Ь
и c < r f , то ac-\-bd^ad-\-bc.
19. П р е д п о л о ж и м , что с р е д и п я т и чисел нет о д и н а к о
в ы х ( с л у ч а й с о в п а д а ю щ и х чисел р а с с м а т р и в а е т с я а н а л о
гично. В д а л ь н е й ш е м б у д е м о б о з н а ч а т ь о п е р а ц и ю с р а в -
Ш
нения з н а ч к о м « : » . Н а п р и м е р , 5 : 3 о з н а ч а е т , что мы
сравниваем пятое и третье числа. З а п и с ь 5 < с З означает,
что п я т о е ч и с л о м е н ь ш е т р е т ь е г о .
С н а ч а л а в ы п о л н и м о п е р а ц и и 1:2, 3 : 4 . П р и необходи
мости, п е р е н у м е р о в ы в а я ч и с л а , п о л у ч а е м , что 1 < 2 ,
3 < 4 . Д а л е е в ы п о л н я е м о п е р а ц и ю 1:3. О п я т ь ж е при
необходимости, перенумеровывая числа, получаем К З .
В ы п о л н я е м о п е р а ц и ю 3 : 5 . П р и этом в о з м о ж н ы с л е д у ю
щие ситуации:
1) 3 > 5 . П о д в о д я итог ч е т ы р е х п р о д е л а н н ы х о п е р а
ций с р а в н е н и я , и м е е м : 1 < 2 ; 1 < = С 3 < 4 ; 5 < 3 .
2>3 2<3
2) 3 < 5 .
С р а в н и в а е м 4 и 5.
Пусть 4 < 5 . Тогда 1 < 2 ; 1 < 3 < 4 < 5 .
В ы п о л н я е м 2 : 4 . В з а в и с и м о с т и от р е з у л ь т а т а
делаем либо 2 : 3 , либо 2 : 5 . Оставшиеся варианты
рассматриваем аналогично.
2 0 . Б е з п о т е р и о б щ н о с т и п р е д п о л о ж и м , что э л е м е н т ы
м а с с и в а А у п о р я д о ч е н ы в в о з р а с т а ю щ е м п о р я д к е (во
м н о ж е с т в е нет д у б л и р у ю щ и х с я э л е м е н т о в , п о э т о м у м а с
с и в А у п о р я д о ч е н и м е н н о в в о з р а с т а ю щ е м , а не т о л ь к о
112
в н е у б ы в а ю щ е м п о р я д к е ) . Е с л и это не т а к , то д о б а в л я е м
в программу подпрограмму сортировки.
Е с л и с в о й с т в о (*) в ы п о л н я е т с я д л я п о д м н о ж е с т в а В,
то оно в ы п о л н я е т с я и д л я т р е х н а и б о л ь ш и х по в е л и ч и н е
э л е м е н т о в В. О б р а т н о , из в ы п о л н и м о с т и (*) д л я трех
максимальных элементов В следует выполнимость (*)
и д л я В. М ы б у д е м в к л ю ч а т ь в В в п о р я д к е их в о з р а с т а
н и я э л е м е н т ы из Л и п р о в е р я т ь д л я трех м а к с и м а л ь н ы х
в ы п о л н е н и е у с л о в и я (*).
2 1 . а ) П у с т ь в п е р е м е н н о й MaxEndHere хранится
сумма элементов максимального подвектора,
з а к а н ч и в а ю щ е г о с я в п о з и ц и и i—1. Д л я того
ч т о б ы п е р е м е н н а я MaxEndHere начала хра
нить сумму элементов максимального подвек
т о р а , о к а н ч и в а ю щ е г о с я в п о з и ц и и i, необходи
мо в ы п о л н и т ь с л е д у ю щ у ю о п е р а ц и ю п р и с в а и
вания:
а д л я того ч т о б ы н а й т и м а к с и м а л ь н у ю с у м м у
MaxSoFar элементов подвектора, встретивше
гося до п о з и ц и и i, н а д о в ы п о л н и т ь о п е р а ц и ю :
Программа:
M a x S o F a r : = А [1];
M a x E n d H e r e : = А [1];
for i : = 2 to К do
begin
M a x E n d H e r e : = = m a x ( M a x E n d H e r e + A[i], A [ i ] ) ;
MaxSoFar: =max(MaxSoFar, MaxEndHere);
end;
S(M, N)=^C[N]-C[M-l].
i: = l; j : = l;
M i n S o F a r : = a b s ( С [2] — С [1] — Р ) ; { Т е к у щ е е з н а ч е
ние м и н и м а л ь н о й р а з н о с т и }
w h i l e ( i < = k ) a n d ( j < = k ) do
begin
if i < > j {если это не один и тот ж е э л е м е н т м а с
с и в а С}
then M i n S o F a r : = m i n ( M i n S o F a r , a b s ( C [ j ] — C [ i ] — P ) ) ;
if C [ j ] C [ i ] > P
t h e n i : = i + l; { у в е л и ч и в а е м в ы ч и т а е м о е }
else j : = j f l ; {увеличиваем уменьшаемое}
end;
§ 1. П О И С К Д Е Л И Т Е Л Е Й Ч И С Л А .
ПРОСТЫЕ ЧИСЛА
Н а т у р а л ь н о е ч и с л о Ъ н а з ы в а ю т делителем натураль
ного ч и с л а а, е с л и а п р е д с т а в и м о в в и д е п р о и з в е д е н и я
a —be, (1)
где с — н а т у р а л ь н о е ч и с л о . В э т о м с л у ч а е г о в о р я т , что
ч и с л о а д е л и т с я б е з о с т а т к а на ч и с л о Ь, и л и , к о р о ч е ,
ч и с л о а д е л и т с я на ч и с л о Ь. И з ф о р м у л ы ( 1 ) с л е д у е т , что
ч и с л о а д е л и т с я т а к ж е на ч и с л о с, т. е. с — д е л и т е л ь
ч и с л а а. Н а п р и м е р , 1 5 = 3 • 5, 3 и 5 — д е л и т е л и ч и с л а 15.
Число 1 является делителем любого натурального
ч и с л а , п о с к о л ь к у л ю б о е н а т у р а л ь н о е ч и с л о д е л и т с я на
1 (а:1=а).
Ч и с л о , д е л я щ е е с я на 2, н а з ы в а ю т четным; ч и с л о , не
д е л я щ е е с я на 2, н а з ы в а ю т нечетным.
Кратным ч и с л а b н а з ы в а ю т ч и с л о а, к о т о р о е д е л и т с я
на Ь. М н о ж е с т в о ч и с е л , к р а т н ы х д а н н о м у ч и с л у Ь, б е с к о
нечно.
В п р о г р а м м и р о в а н и и д л я о п р е д е л е н и я того, я в л я е т с я
л и ч и с л о b д е л и т е л е м ч и с л а а или нет, п о л ь з у ю т с я
с л е д у ю щ и м с в о й с т в о м : е с л и ч и с л о а д е л и т с я на ч и с л о Ь,
то о с т а т о к от д е л е н и я р а в е н 0.
е с л и m o d ( а , Ь) = 0
то
Р:=«Делится» (3.1)
иначе
| Р : = «Не делится»
все
Н а т у р а л ь н о е ч и с л о а, не р а в н о е 1, н а з ы в а е т с я про
стым, е с л и оно д е л и т с я т о л ь к о на с е б я и на 1, т. е. и м е е т
116
т о л ь к о д в а д е л и т е л я . Н а т у р а л ь н о е число, о т л и ч н о е от
1 и не я в л я ю щ е е с я п р о с т ы м , н а з ы в а е т с я составным.
Другими словами, натуральное число называется состав
н ы м , е с л и оно и м е е т б о л е е д в у х д е л и т е л е й . Ч и с л о 1 не
о т н о с и т с я ни к п р о с т ы м , ни к с о с т а в н ы м ч и с л а м , по
с к о л ь к у и м е е т л и ш ь один д е л и т е л ь . Н а и м е н ь ш и м про
с т ы м ч и с л о м я в л я е т с я ч и с л о 2. Это е д и н с т в е н н о е четное
п р о с т о е ч и с л о . О с т а л ь н ы е п р о с т ы е ч и с л а я в л я ю т с я не
четными.
Д л я того чтобы н а й т и д е л и т е л и ч и с л а а > 1 , мы
д о л ж н ы п о п ы т а т ь с я д е л и т ь д а н н о е ч и с л о на в с е о т л и ч
н ы е от 1 ч и с л а , м е н ь ш и е а. Е с л и а не р а з д е л и л о с ь ни на
одно из них, с л е д о в а т е л ь н о , оно я в л я е т с я п р о с т ы м .
М а с с и в В будем использовать для хранения делите
л е й ч и с л а а, п е р е м е н н у ю Р — д л я о п р е д е л е н и я того,
п р о с т о е ч и с л о или с о с т а в н о е , п е р е м е н н у ю k — д л я обо
з н а ч е н и я н о м е р а т е к у щ е г о д е л и т е л я ч и с л а а.
Р:=«простое»
В[1]: = 1
В [2]: = а
к: = 2
н ц д л я i от 2 до а — 1 (3.2)
е с л и m o d ( a , i) = 0
то
к: = к + 1
B[k]:=i
Р ; . = «составное»
все
кц
119
1 2 4 5 6 7 8 9 10
со
11 12 13 14 15 J_6 17 18 19 20
2Л 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
М е т о д Э р а т о с ф е н а п о л у ч и л н а з в а н и е р е ш е т а по с л е
д у ю щ и м п р и ч и н а м . Д р е в н и е г р е к и р а б о ч и е з а п и с и вели
з а о с т р е н н о й п а л о ч к о й на в о с к о в ы х д о щ е ч к а х . Т а к о й п а
л о ч к о й Э р а т о с ф е н п р о к а л ы в а л т е м е с т а , где б ы л и н а п и
с а н ы с о с т а в н ы е ч и с л а . П о с л е этого д о щ е ч к а с т а н о в и л а с ь
п о х о ж е й на р е ш е т о . П р и м е н я я м е т о д Э р а т о с ф е н а , к а к бы
о т с е и в а ю т , п р о п у с к а ю т ч е р е з р е ш е т о все с о с т а в н ы е чис
ла и оставляют только простые.
Д л я х р а н е н и я чисел с о з д а д и м м а с с и в В[1..п]. Вна
ч а л е з а н е с е м в него ч и с л о 2 и все н е ч е т н ы е ч и с л а ,
т а к к а к все ч е т н ы е , к р о м е ч и с л а 2, я в л я ю т с я с о с т а в н ы
ми. З а т е м б у д е м з а м е н я т ь н у л я м и все ч и с л а , к р а т н ы е
3. П о с л е этого н а й д е м п е р в о е н е н у л е в о е ч и с л о п о с л е
ч и с л а 3 и б у д е м з а м е н я т ь н у л я м и все ч и с л а , к р а т н ы е
е м у . Т а к п р о д о л ж а е м до тех пор, п о к а не п р о с м о т р и м
весь массив.
N : = d i v ( ( N + l ) , 2)
В[1]:==2
н ц д л я i от 2 до N п е р в о н а ч а л ь н о е за-
| B[i]:==2*i—1 :полнени„е массива
кц
:индекс п е р в о г о
: обнуляемого
120
нц пока ( j < = N ) и ( B [ j ] = 0) :поиск очередного
| j г= j —
—| 1 : ненулевого числа
кц
кц
Этот а л г о р и т м р а б о т а е т д о с т а т о ч н о б ы с т р о . Д л я N =
= 10 000 р е з у л ь т а т п о л у ч а е т с я ч е р е з 3 с е к у н д ы ( д л я
IBM PS/2 — 286). О д н а к о у него е с т ь один н е д о с т а т о к :
д л я х р а н е н и я всех ч и с е л т р е б у е т с я м а с с и в с л и ш к о м
б о л ь ш о й р а з м е р н о с т и (5000 э л е м е н т о в д л я / V = 10 000).
Поэтому можно воспользоваться другим алгоритмом,
к о т о р ы й р а б о т а е т м е д л е н н е е , о д н а к о не т р е б у е т с о х р а н е
ния в м а с с и в е всех н е ч е т н ы х ч и с е л .
В массиве будем хранить только простые числа.
В н а ч а л е в м а с с и в п о м е с т и м ч и с л о 2. Р а с с м а т р и в а я
о ч е р е д н о е н е ч е т н о е ч и с л о X, б у д е м д е л и т ь его на п р е д ш е
с т в у ю щ и е е м у п р о с т ы е ч и с л а . И е с л и ни на о д н о из
п р е д ш е с т в у ю щ и х п р о с т ы х чисел т е к у щ е е не д е л и т с я , то
оно с а м о я в л я е т с я п р о с т ы м . П р о в е р к у на д е л и м о с т ь
ч и с л а н у ж н о з а к а н ч и в а т ь п о с л е того, к а к п р о в е р е н а
д е л и м о с т ь на п р о с т о е ч и с л о , не п р е в о с х о д я щ е е [sqrt (X)].
В[1]:=2
j:=2
i:=3
нц пока К = N
к: = 1
d:=int(sqrt(i))+l
нц пока ( B [ k ] < = d ) и (mod (i, В [ k ] ) < > 0 ) и ( k < j )
| k : = k + l
кц (3.6)
если В [ k ] > d
то
B[j]:=i
] : = j + l.
все
i:=i + 2
кц
121
Д а н н ы й а л г о р и т м на к о м п ь ю т е р е с 286-м п р о ц е с с о
р о м п р и N = = 1 0 000 в ы д а е т р е з у л ь т а т ч е р е з 12 с е к у н д .
С л е д у е т о б р а т и т ь в н и м а н и е и на н е о б х о д и м о с т ь в в е д е
ния переменной d . В ы р а ж е н и е , значение которого при
сваивается переменной d , можно вычислять непосредст
венно в условии цикла, однако это удлинит работу
п р о г р а м м ы д о 100 с е к у н д . ( П р о в е р ь т е и п о д у м а й т е ,
почему т а к происходит.)*
1. Как о п р е д е л и т ь , д е л и т с я л и д а н н о е ч и с л о а на ч и с л о 6?
2. Как найти в с е д е л и т е л и числа?
3. Как о п р е д е л и т ь , я в л я е т с я ли ч и с л о п р о с т ы м ?
4. Как п о л у ч и т ь в с е п р о с т ы е ч и с л а , н е п р е в о с х о д я щ и е д а н н о г о
ч и с л а N1
§ 2. Р А З Л О Ж Е Н И Е Ч И С Л А НА ПРОСТЫЕ
МНОЖИТЕЛИ
т. е.
a = PiP ---Pk-
2 ... (2)
Н а х о д и т ь Pi б у д е м по с л е д у ю щ е м у а л г о р и т м у : р а з д е
л и м ч и с л о а на н а и м е н ь ш е е п р о с т о е ч и с л о 2, е с л и о с т а
т о к от д е л е н и я р а в е н 0, то р\ — 2 и ч и с л о а у м е н ь ш а е м
в 2 р а з а , т. е. а: = a div 2. З а т е м о п я т ь д е л и м а на 2, е с л и
р а з д е л и л о с ь , то р = 2 и а о п я т ь у м е н ь ш а е м в д в а р а з а .
2
Т а к п р о д о л ж а е м до тех пор, п о к а а д е л и т с я на 2. Е с л и
ч и с л о а не р а з д е л и л о с ь на 2, то п ы т а е м с я д е л и т ь а на
с л е д у ю щ е е п р о с т о е ч и с л о 3 . Е с л и р а з д е л и л о с ь , то н а х о -
122
дим очередное p и уменьшаем а в 3 раза. П р о д о л ж а е м
t
т а к до тех п о р , п о к а ч и с л о д е л и т с я н а 3 . З а т е м п ы т а е м с я
д е л и т ь на 5, 7, 11, ... . З а к о н ч и м т о г д а , к о г д а а = \.
В к а ч е с т в е п р и м е р а р а с с м о т р и м р а з л о ж е н и е на п р о
с т ы е м н о ж и т е л и ч и с л а 2520. З а п и с ь б у д е м п р о и з в о д и т ь
по з н а к о м о й схеме:
2520 2
1260 2 2520 = 2-2-2-3-3-5-7
630 2
315 3
105 3
35 5
7 7
1
123
иначе
если d = 2
то
d:==d+l
иначе
d:=d + 2
все
все
кц
а = р \р 2-р т,
а А а
(3)
где р и р, 2 р — р а з л и ч н ы е п р о с т ы е ч и с л а , а,,
т
а,
2 а — н е к о т о р ы е н а т у р а л ь н ы е ч и с л а . К а ж д о е из a
т t
ние ч и с л а а. П р о и з в е д е н и е в п р а в о й ч а с т и р а в е н с т в а
(3) н а з ы в а ю т каноническим разложением натурального
ч и с л а а.
Т а к , ч и с л о 2520 из н а ш е г о п р и м е р а б у д е т з а п и с а н о
с л е д у ю щ и м о б р а з о м : 2520 = 2 - 3 - 5 - 7.
3 2
1. В с я к о е ли ч и с л о п р и р а з л о ж е н и и на п р о с т ы е м н о ж и т е л и
имеет больше одного множителя?
2 . Как р а з л о ж и т ь ч и с л о на п р о с т ы е м н о ж и т е л и ?
3. П о ч е м у н е п р и м е н я ю т в и н ф о р м а т и к е а л г о р и т м раз
л о ж е н и я на п р о с т ы е м н о ж и т е л и , и з в е с т н ы й и з курса
математики?
4. Ч т о т а к о е к а н о н и ч е с к о е р а з л о ж е н и е ?
124
§ 3. П О И С К Н А И Б О Л Ь Ш Е Г О О Б Щ Е Г О
ДЕЛИТЕЛЯ ( Н О Д ) И НАИМЕНЬШЕГО
ОБЩЕГО КРАТНОГО ( Н О К )
125
часто д л я н а х о ж д е н и я Н О Д применяют метод, который
н а з ы в а е т с я алгоритмом Евклида.
Это один из с а м ы х д р е в н и х и п о п у л я р н ы х а л г о р и т
мов. Он описан еще в « Н а ч а л а х » Е в к л и д а .
П р е ж д е чем о п и с а т ь с а м а л г о р и т м , у к а ж е м н е с к о л ь
ко с в о й с т в Н О Д , на к о т о р ы е о п и р а е т с я а л г о р и т м Е в к
лида.
П у с т ь а и Ь — о т л и ч н ы е от н у л я н а т у р а л ь н ы е ч и с л а ,
п р и ч е м а>Ь, тогда:
1) Н О Д (a, b)=nOJX{a~b, Ь);
2) Н О Д ( а , а ) = а ;
3) Н О Д (а, 0) = а.
С в о й с т в а 2 ) и 3) я в л я ю т с я очевидными.
Примечание. Докажем свойство 1).
126
5 10
5 5
Алгоритм будет следующим:
нц пока а < > Ь
если а > Ь
то
а: = а —b (3.8)
иначе
b : = b - a
все
кц
NOD: = а
Если проанализировать работу данного алгоритма, то
м о ж н о з а м е т и т ь , что о д н о и то ж е ч и с л о н у ж н о о т н и м а т ь
н е с к о л ь к о р а з . Э т о г о м о ж н о и з б е ж а т ь , е с л и в м е с т о не
с к о л ь к и х в ы ч и т а н и й н а х о д и т ь о с т а т о к от д е л е н и я б о л ь
ш е г о ч и с л а на м е н ь ш е е ( п о д у м а й т е п о ч е м у ) . В этом
с л у ч а е с в о й с т в о 1) м о ж н о з а п и с а т ь в в и д е : Н О Д ( а , Ь) =
= Н О Д ( а m o d b, b). Д л я о к о н ч а н и я р а б о т ы а л г о р и т м а
н у ж н о в о с п о л ь з о в а т ь с я с в о й с т в о м 3).
П р и м е р : Н а й т и Н О Д ( 5 3 0 , 155), а = 530, 6 = 1 5 5 .
а Ь
530 155
65 155
65 25
15 25
15 10
5 10
5 0
Алгоритм будет выглядеть следующим образом:
нц пока ( а < > 0 ) и (Ь<>0)
если а > Ь
то
а : = m o d ( а , Ь)
иначе
b : = mod (b, а)
все (3.9)
кц
127
если а = 0
то
NOD:=b
иначе
NOD:=a
все
Последний оператор Е С Л И можно заменить операто
ром N O D : = a-(-b. П о д у м а й т е п о ч е м у .
3.2. П о и с к НОК
Е с л и а и Ъ — д в а н а т у р а л ь н ы х ч и с л а и если ч и с л о
с т а к о в о , что с д е л и т с я на а и с д е л и т с я н а ft, то ч и с л о
с н а з ы в а ю т общим кратным ч и с е л а и Ь. П р о и з в о л ь н ы е
два числа всегда обладают общим кратным. Таким
к р а т н ы м я в л я е т с я ч и с л о , р а в н о е п р о и з в е д е н и ю ab.
Ч и с л о d н а з ы в а ю т наименьшим общим кратным
( Н О К ) чисел а и Ь, е с л и d я в л я е т с я о б щ и м к р а т н ы м
ч и с е л а и Ь; на d д е л и т с я л ю б о е д р у г о е о б щ е е к р а т н о е .
Д р у г и м и с л о в а м и , d — н а и м е н ь ш е е из всех о б щ и х к р а т
ных ч и с е л а и Ь.
Д л я нахождения Н О К можно воспользоваться алго
р и т м о м , и з в е с т н ы м из к у р с а м а т е м а т и к и . Н у ж н о р а з
л о ж и т ь ч и с л а а и b на п р о с т ы е м н о ж и т е л и , а з а т е м из
д в у х р а з л о ж е н и й в ы б р а т ь т е с о м н о ж и т е л и , к о т о р ы е вхо
д я т хотя бы в одно р а з л о ж е н и е .
П р и м е р : Н О К (52, 65).
52 2 65 5
26 2 13 13
13 13 1
1
52 = 2 - 2 . 1 3 ; 6 5 = 5 - 1 3 ; Н О К ( 5 2 , 6 5 ) = 2 - 2 - 1 3 - 5 = 260.
О д н а к о п о л ь з о в а т ь с я э т и м а л г о р и т м о м на п р а к т и к е
не с л е д у е т ( п р и ч и н ы о п и с а н ы в ы ш е ) . Д л я н а х о ж д е н и я
Н О К можно воспользоваться следующим свойством:
Н О К ( а , 6) = а - 6 / Н О Д ( а , Ь) ( д о к а ж и т е с а м о с т о я т е л ь н о ) .
Д л я нахождения Н О Д следует воспользоваться алго
ритмом Евклида.
128
ВОПРОСЫ ДЛЯ ПОВТОРЕНИЯ
1. ЧТО ТАКОЕ Н О Д ?
2. КАКИЕ СПОСОБЫ ВЫЧИСЛЕНИЯ Н О Д ВАМ ИЗВЕСТНЫ?
3 . ЧТО ТАКОЕ Н О К ?
4. КАК НАЙТИ Н О К ТРЕХ ЧИСЕЛ?
§ 4. П Р Е Д С Т А В Л Е Н И Е ЧИСЕЛ.
ВЫДЕЛЕНИЕ ЦИФР ЧИСЛА
4.1. П р е о б р а з о в а н и е числа
из обычного представления в табличное
П у с т ь з а д а н о ч и с л о в о б ы ч н о м п р е д с т а в л е н и и , не
обходимо получить табличное представление данного
числа.
К а к в и д н о из п р е д с т а в л е н и я ч и с л а в в и д е с у м м ы
р а з р я д н ы х слагаемых, к а ж д о е слагаемое, кроме послед
него, р а з д е л и т с я на 10 б е з о с т а т к а . П о э т о м у о с т а т о к от
д е л е н и я ч и с л а на 10 б у д е т р а в е н п о с л е д н е й ц и ф р е ч и с л а .
Эту ц и ф р у мы помещаем в массив. Если мы р а з м е щ а е м
в м а с с и в е ц и ф р ы ч и с л а , н а ч и н а я с п о с л е д н е й , то п е р в о
му элементу массива п р и с в а и в а е т с я значение получен
ной ц и ф р ы . Е с л и р а з м е щ а е м ц и ф р ы , н а ч и н а я с п е р в о й ,
то п о л у ч е н н у ю ц и ф р у п о м е щ а е м в э л е м е н т м а с с и в а с ин
дексом, равным количеству цифр в числе (количество
ц и ф р н е о б х о д и м о п о д с ч и т а т ь д о того, к а к н а ч н е м п о л у
ч а т ь с а м и ц и ф р ы ) . Д а л е е н а х о д и м ц е л у ю ч а с т ь от д е л е
н и я исходного ч и с л а на 10 ( и л и , г о в о р я д р у г и м и с л о в а м и ,
о т б р а с ы в а е м последнюю цифру ч и с л а ) и снова на-
130
х о д и м о с т а т о к от д е л е н и я д а н н о г о ч и с л а на 10, э т о
и б у д е т с л е д у ю щ а я ц и ф р а . Т а к п р о д о л ж а е м д о тех п о р ,
п о к а в ч и с л е не о с т а н е т с я ни одной ц и ф р ы .
Д а н н ы й алгоритм размещает цифры числа в массив
в обратном порядке. Д л я хранения цифр числа N будем
и с п о л ь з о в а т ь м а с с и в В, k — н о м е р т е к у щ е й ц и ф р ы в
м а с с и в е В.
к:=0
нц пока N > = 1
k : = k + l
В [ k ] : = m o d ( N , 10) (3.10)
N : = d i v ( N , 10)
кц
131
р а в н я л о с ь б ы 0 ( п о ч е м у ? ) и в т о р о й ц и к л не в ы п о л н и л с я
б ы ни р а з у . В п е р е м е н н о й т с о х р а н я е т с я к о л и ч е
с т в о ц и ф р ч и с л а , что, в о о б щ е г о в о р я , н е в с е г д а необ
ходимо.
4.2. П р е о б р а з о в а н и е т а б л и ч н о г о
представления числа в обычное
Р е ш и м о б р а т н у ю з а д а ч у , т. е. п о л у ч и м о б ы ч н о е п р е д
с т а в л е н и е ч и с л а из т а б л и ч н о г о .
Пусть некоторое число с з а д а н о своими цифрами:
а = а а а ... х 2 3 а. п
Ч е р т а сверху о б о з н а ч а е т , что а а, а, а — и 2 3 п
ц и ф р ы ч и с л а a (a — ц и ф р а с т а р ш е г о р а з р я д а ) . З а t
п и ш е м это ч и с л о в в и д е с у м м ы р а з р я д н ы х слага
емых:
а = а г 10 - + я 1
А - 2 10"- 2
+ А .10 ' -\-...
3
п 3
+ А „ _ , • 10 +а . л (4)
Д л я т о г о ч т о б ы п о л у ч и т ь з н а ч е н и е ч и с л а а, необходи
мо в ы ч и с л и т ь з н а ч е н и е в ы р а ж е н и я , с т о я щ е г о в п р а в о й
ч а с т и р а в е н с т в а (4). Д л я э т о г о п р о д е л а е м с л е д у ю щ и е
п р е о б р а з о в а н и я : в ы н е с е м 10 з а с к о б к и из тех с л а г а е м ы х ,
д л я к о т о р ы х это в о з м о ж н о .
а = а 10 - г
а ,
+ а -10 - 2
а 2
+ а -10 - а
а 3
+ ...+а _ 10 а г + а п =
= 10(О .10"- 1
2
+ А -10"- 2
3
+ А -10"-
3
4
+ . . . + А » - 1 ) + О».
З а т е м с в ы р а ж е н и е м в с к о б к а х п р о д е л а е м то ж е
с а м о е , т. е. в ы н е с е м 10 з а с к о б к и из тех с л а г а е м ы х , д л я
к о т о р ы х это в о з м о ж н о . П р о д о л ж и м д е й с т в о в а т ь т а к и м
о б р а з о м до тех п о р , п о к а это б у д е т в о з м о ж н о :
а = а 10 ~ г
я 1
+ а -10 - 2
я 2
+ а -10 - 3
а 3
+ . . . + а я _ \ 0 + а
г я =
==10(A .10 - + A .10 - + A -10''-
1
n 2
2
f ! 3
3
4
+ . . . + A „ _ 1 ) + A N =
= 1 0 ( 1 0 - . . . (lQ(a W r + a ) + a ) + ...+a _ )
i 3 n l + a.
n
132
Теперь д л я вычисления значения числа а достаточно:
1) п е р в у ю ц и ф р у ч и с л а у м н о ж и т ь на 10 и к п р о и з в е
дению прибавить вторую цифру;
2) п о л у ч е н н у ю с у м м у у м н о ж и т ь на 10 и п р и б а в и т ь
следующую цифру;
3) п у н к т 2) в ы п о л н я т ь до тех п о р , п о к а не и с п о л ь з у е м
все з а д а н н ы е ц и ф р ы ч и с л а .
О п и с а н н ы й в ы ш е а л г о р и т м н а з ы в а е т с я схемой Гор-
нера. Р а б о т а а л г о р и т м а р а с с м о т р е н а д л я с л у ч а я , к о г д а
цифры числа расположены в массиве в прямом (а, —
цифра старшего разряда) порядке.
Ч и с л о б у д е м п о л у ч а т ь в п е р е м е н н о й а. Ц и ф р ы ч и с л а
х р а н я т с я в м а с с и в е В ( э л е м е н т В[1] с о д е р ж и т ц и ф р у
старшего разряда).
а:=0
нц д л я i от 1 до N
| a:=a*10+B[i] (3.12)
кц
Д л я п о л у ч е н и я ч и с л а а, ц и ф р ы к о т о р о г о з а д а н ы
в обратном порядке (первый элемент массива содержит
ц и ф р у м л а д ш е г о р а з р я д а ) , м о ж н о в о с п о л ь з о в а т ь с я схе
мой Г о р н е р а , н а ч и н а я о б р а б о т к у с п о с л е д н е г о э л е м е н т а
массива.
Можно воспользоваться и другим алгоритмом. К а ж
д а я ц и ф р а д о л ж н а у м н о ж а т ь с я на с о о т в е т с т в у ю щ у ю ей
р а з р я д н у ю е д и н и ц у : п е р в а я — на 1, в т о р а я — на 10,
т р е т ь я — на 100 и т. д. К а ж д а я с л е д у ю щ а я р а з р я д н а я
е д и н и ц а в 10 р а з б о л ь ш е п р е д ы д у щ е й . Ч и с л о а б у д е м
н а к а п л и в а т ь следующим образом: будем брать очеред
н у ю ц и ф р у , у м н о ж а т ь ее на с о о т в е т с т в у ю щ у ю ей р а з р я д
ную е д и н и ц у и п р и б а в л я т ь п о л у ч е н н о е п р о и з в е д е н и е
к у ж е н а к о п л е н н о м у числу. Р а з р я д н у ю е д и н и ц у у в е л и
чим в 10 р а з . Т а к п р о д о л ж а е м до тех пор, п о к а не и с п о л ь
зуем все цифры числа.
В переменной г будем хранить значение разрядной
е д и н и ц ы , ц и ф р ы ч и с л а б у д е м х р а н и т ь в м а с с и в е В.
133
r: = L
н ц д л я i от 1 д о N
I a: = a + B[i]*r
JR:=R*10 (3.13)
кц
П р о а н а л и з и р у й т е а л г о р и т м ы ( 3 . 1 2 ) и (3.13) на с к о
рость работы (посчитайте количество выполненных
арифметических операций).
§ 5. П Е Р Е В О Д Ч И С Е Л ИЗ ОДНОЙ СИСТЕМЫ
СЧИСЛЕНИЯ В ДРУГУЮ
З а д а ч и п е р е в о д а чисел из о д н о й с и с т е м ы с ч и с л е н и я
в д р у г у ю м о ж н о р а з д е л и т ь на д в е г р у п п ы : п е р е в о д из
д е с я т и ч н о й с и с т е м ы с ч и с л е н и я в к а к у ю - т о д р у г у ю и из
какой-то в десятичную ( р а с с м а т р и в а е м только позицион
н ы е с и с т е м ы с ч и с л е н и я ) . Е с л и т р е б у е т с я , н а п р и м е р , пе
р е в е с т и ч и с л о из т р о и ч н о й с и с т е м ы с ч и с л е н и я в с е м е
ричную, это можно сделать через десятичную систему
с ч и с л е н и я . Е с л и д е л а т ь э т о н а п р я м у ю , то п р и д е т с я м о д е
л и р о в а т ь арифметические действия либо в троичной,
либо в семеричной системе счисления.
Д л я записи числа в любой системе счисления, кроме
десятичной, мы будем пользоваться только табличным
представлением числа.
А л г о р и т м п е р е в о д а ч и с л а из д е с я т и ч н о й с и с т е м ы
счисления в какую-то другую известен. Нужно разде
л и т ь ч и с л о на о с н о в а н и е с и с т е м ы с ч и с л е н и я , в кото-
134
рую переводят, и найти остаток. Если целая часть
ч а с т н о г о п о л у ч и л а с ь не р а в н о й н у л ю , то ее д е л я т на
основание системы счисления. Т а к п р о д о л ж а ю т до тех
п о р , п о к а ц е л а я ч а с т ь ч а с т н о г о не с т а н е т р а в н о й н у л ю .
З а т е м в ы п и с ы в а ю т о с т а т к и в п о р я д к е , о б р а т н о м их
п о л у ч е н и ю . Эти о с т а т к и я в л я ю т с я ц и ф р а м и и с к о м о г о
числа.
П р и м е р . Переведем число 345 в семеричную систе
му с ч и с л е н и я .
3 2 5 |_7
325 =643 .
ш 7
6437 = 6 - 7 + 4 . 7 + 3-7°.
2 1
a= a p -r
n l
+ a -p -
2
n 2
+ a p''-
y
3
+ ...+a _ -p li l + a,
n (5)
где а и а, а
2 ь а — ц и ф р ы ч и с л а а, р — о с н о в а н и е
п
З а п и с ь (5) о т л и ч а е т с я от ( 4 ) т о л ь к о т е м , что о с н о в а
ние д е с я т и ч н о й с и с т е м ы с ч и с л е н и я 10 з а м е н и м на п р о
и з в о л ь н о е ч и с л о р ( о с н о в а н и е новой с и с т е м ы с ч и с л е н и я ) .
135
Ц и ф р ы ч и с л а в новой с и с т е м е с ч и с л е н и я м о ж е м п о л у
ч а т ь , п о л ь з у я с ь а л г о р и т м о м (3.10), о п я т ь ж е з а м е н и в
ч и с л о 10 ч и с л о м р. Ц и ф р ы ч и с л а , з а п и с а н н о г о в с и с т е м е
с ч и с л е н и я с о с н о в а н и е м р, б у д у т х р а н и т ь с я в м а с с и в е
В в обратном порядке.
З а п и ш е м а л г о р и т м п е р е в о д а ч и с л а N из д е с я т и ч н о й
с и с т е м ы с ч и с л е н и я в с и с т е м у с ч и с л е н и я с о с н о в а н и е м р:
к: =0
нц п о к а N > = 1
k : = k + l
B [ k ] : = m o d ( N , р) (3.14)
N : = d i v ( N , p)
кц
С п о м о щ ь ю а л г о р и т м о в (3.10) и (3.12) м о ж н о о с у щ е
с т в и т ь и п е р е в о д из к а к о й - т о с и с т е м ы с ч и с л е н и я (с осно
в а н и е м м е н ь ш е 10) в д е с я т и ч н у ю . Д л я этого н у ж н о
в ы ч и с л и т ь з н а ч е н и е в ы р а ж е н и я (5) ( а л г о р и т м (3.12) или
(3.13), з а м е н я я 10 на р). Ч и с л о п о л у ч и м в о б ы ч н о м
п р е д с т а в л е н и и . Т а б л и ч н о е п р е д с т а в л е н и е м о ж н о полу
чить, п р и м е н и в а л г о р и т м (3.10) к п о л у ч е н н о м у р е з у л ь
тату.
Этот а л г о р и т м с ф о р м у л и р у й т е с а м о с т о я т е л ь н о .
§ 6. Д Е Л И М О С Т Ь ЧИСЕЛ
Д л я о п р е д е л е н и я , д е л и т с я ли одно ч и с л о на д р у г о е ,
н у ж н о , к а к у п о м и н а л о с ь в ы ш е , н а й т и о с т а т о к от д е л е н и я
одного ч и с л а на д р у г о е и п р о в е р и т ь , р а в е н л и он н у л ю .
Е с л и о с т а т о к р а в е н н у л ю , то ч и с л о д е л и т с я , е с л и не
р а в е н н у л ю — нет. Т а к и м о б р а з о м , п р о в е р к а на д е л и
м о с т ь с в о д и л а с ь к н а х о ж д е н и ю о с т а т к а от д е л е н и я одно-
136
го ч и с л а на д р у г о е . Д л я чисел в о б ы ч н о м п р е д с т а в л е н и и
остаток находится с помощью стандартной операции
m o d . П р и р е ш е н и и этой з а д а ч и в р у ч н у ю мы д е л и м о д н о
ч и с л о на д р у г о е «в с т о л б и к » .
Р а с с м о т р и м , к а к н а й т и о с т а т о к от д е л е н и я ч и с л а ,
з а д а н н о г о т а б л и ч н о , на ч и с л о в о б ы ч н о м п р е д с т а в л е н и и .
В д е с я т и ч н о й с и с т е м е с ч и с л е н и я число п р е д с т а в и м о
в в и д е (4) ( § 4, п. 4.2):
я 1 и 2 3
а = а , . 1 0 + а 1 0 4 а . 1 0 " + .. + а „ _ 1 0 + а„,
2 3
где а и а, а,
2 3 а„ — ц и ф р ы ч и с л а а, п р и ч е м 0 ^ а , < 10,
П у с т ь н а м т р е б у е т с я н а й т и о с т а т о к от д е л е н и я ч и с л а
а на ч и с л о т.
П р е ж д е чем это д е л а т ь , у к а ж е м на н е к о т о р ы е свой
с т в а о с т а т к о в . П у с т ь с, d, я — н е к о т о р ы е н а т у р а л ь н ы е
числа, тогда:
1) (c + rf) mod п — ((с mod n)-\-(d m o d n)) m o d n;
2) c-d m o d n — c(d mod n) m o d n = ((c m o d n) d) m o d n;
3) c mod /i = ( ( c ' m o d «) c) mod «.
d _ 1
= с mod я, d , = d d i v r t , d = d m o d n ; тогда с = с « с . d =
2 d -n-\-d ; 1 т 2 l 2
f
= ( 2 + 4) & c
= (( mo
+ ° d n)) mod я.
n c m 0 Q m
Н а й д е м о с т а т о к от д е л е н и я ч и с л а а ( п р е д с т а в л е н и е
(4), п. 4.2) на ч и с л о т, п о л ь з у я с ь с в о й с т в а м и 1) и 2) ( с н а
ч а л а п р и м е н и м с в о й с т в о 1), з а т е м к к а ж д о м у с л а г а е м о
му с в о й с т в о 2)):
я 1 я 2 ! 3
a m o d т = ( а 1 0 + а . 1 0 + а з 1 0 ' + . +
1 2
2
+ (a 10" )mod т + 2
+ . . . + ( а „ _ • 10) m o d т-\-а
1 m o d т) mod т — п
Ч 2
( ( а , ( 1 Q " ~ ' m o d т) m o d т) -\- ( а ( 1 0 ~ m o d т) m o d m ) + 2
!37
Из последнего равенства вытекает алгоритм нахож
д е н и я о с т а т к а . Н а х о д и м о с т а т о к от д е л е н и я о ч е р е д н о й
р а з р я д н о й е д и н и ц ы на ч и с л о т, п о л ь з у я с ь с в о й с т в о м 3).
У м н о ж а е м п о л у ч е н н о е ч и с л о на з н а ч е н и е ц и ф р ы , со
ответствующей данной разрядной единице, прибавляем
к т о м у , что п о л у ч и л и на п р е д ы д у щ и х ш а г а х , и с н о в а
н а х о д и м о с т а т о к от д е л е н и я на т. Т а к п р о д о л ж а е м до
тех п о р , пока не и с п о л ь з у е м все ц и ф р ы ч и с л а а.
З н а ч е н и е и с к о м о г о о с т а т к а б у д е м н а к а п л и в а т ь в пе
р е м е н н о й s, з н а ч е н и е о с т а т к а р а з р я д н о й е д и н и ц ы —
в п е р е м е н н о й г, ц и ф р ы ч и с л а б у д у т х р а н и т ь с я в м а с с и в е
В (в о б р а т н о м п о р я д к е , т. е. э л е м е н т В[1] с о о т в е т с т в у е т
цифре младшего разряда).
s:=0
г: = 1
н ц д л я i от 1 до N (3.15)
s : = m o d ( ( s + В [i]*r), m )
r : = m o d (г* 10, m )
кц
А л г о р и т м (3.15) м о ж н о п р и м е н я т ь д л я п о л у ч е н и я
о с т а т к а от д е л е н и я ч и с л а а на ч и с л о т и в т о м с л у ч а е ,
если число с, з а д а н н о е в виде массива ц и ф р , записано
в любой позиционной системе счисления ( ц и ф р ы числа
д о л ж н ы быть записаны своими десятичными аналогами).
Д л я э т о г о д о с т а т о ч н о ч и с л о 10 в а л г о р и т м е (3.15) з а м е
н и т ь о с н о в а н и е м с и с т е м ы с ч и с л е н и я р. О с т а т о к от д е л е
ния будет получен в десятичной системе счисления. Если
е с т ь н е о б х о д и м о с т ь , его м о ж н о п е р е в е с т и в с и с т е м у
с ч и с л е н и я с о с н о в а н и е м р.
Д л я п о л у ч е н и я о с т а т к а от д е л е н и я м о ж н о т а к ж е
в о с п о л ь з о в а т ь с я схемой Г о р н е р а . Д л я э т о г о п р е д с т а в л е
ние ч и с л а ((4), п. 4.2) н е о б х о д и м о п р е о б р а з о в а т ь по схеме
Горнера, а затем применить свойства остатков так, как
это сделано выше. ( Д а н н ы й алгоритм напишите самосто
ятельно.)
138
ВОПРОСЫ ДЛЯ ПОВТОРЕНИЯ
§ 7. Д Е Й С Т В И Я С М Н О Г О З Н А Ч Н Ы М И (БОЛЬШИМИ)
ЧИСЛАМИ
В д а н н о м п у н к т е под м н о г о з н а ч н ы м и ч и с л а м и м ы
будем понимать числа, з а д а н н ы е табличным представле
нием в десятичной системе счисления.
Р а б о т а с многозначными числами п р е д п о л а г а е т моде
лирование арифметических действий над двумя числами,
з а д а н н ы м и м а с с и в а м и своих ц и ф р .
Алгоритмы работы с такими массивами будут напо
м и н а т ь з н а к о м ы е из к у р с а м а т е м а т и к и д е й с т в и я в
столбик.
Пусть два положительных числа А и В з а д а н ы к а к
м а с с и в ы ц и ф р , п р и ч е м А[1] и В[1] с о д е р ж а т ц и ф р ы
м л а д ш е г о р а з р я д а . ( П о д у м а й т е , почему т а к о й п о р я д о к
ц и ф р д л я д а н н о й з а д а ч и у д о б н е е . ) Ч и с л о А с о с т о и т из
N ц и ф р , а ч и с л о В — из М ц и ф р .
7.1. С л о ж е н и е м н о г о з н а ч н ы х чисел
Н а й д е м с у м м у чисел А я В. Б у д е м с к л а д ы в а т ь э л е
менты массивов с одинаковыми номерами и хранить
п о л у ч е н н ы е р е з у л ь т а т ы , к а к э л е м е н т ы м а с с и в а С. Е с л и
на к а к о м т о ш а г е п о л у ч и м С [ г ' ] ^ 1 0 , т о на м е с т е C[i]
о с т а в л я е м о с т а т о к от д е л е н и я C[i] на 10 ( к о л и ч е с т в о
е д и н и ц д а н н о г о р а з р я д а ) , а к э л е м е н т у С [/ + 1 ] п р и б а в и м
1 (перенос 1 в следующий разряд).
Е с л и ч и с л о А состоит из N ц и ф р , а ч и с л о £ — из
М ц и ф р , то ч и с л о С и м е е т л и б о max(N, М) ц и ф р , л и б о
139
m a x (N, M ) - f - 1 ц и ф р у . О б о з н а ч и м ч е р е з К в е л и ч и н у
max(N, Л1)+1.
Перед выполнением сложения следует дополнить
н е з н а ч а щ и м и нулями число с меньшим количеством
ц и ф р т а к , ч т о б ы к о л и ч е с т в о ц и ф р у р а в н я л о с ь . Этого
м о ж н о д о с т и г н у т ь и о б н у л и в м а с с и в ы А и В до в в о д а
цифр.
А л г о р и т м с л о ж е н и я д в у х м н о г о з н а ч н ы х чисел б у д е т
следующим:
если N > M
то
К: = N
иначе
К:=М
все
К : = К + !
нц д л я i от I до К
|СП]:=0 (3.16)
кц
н ц д л я i от 1 до К
C[i]:=A[i] + B|i|+C|i|
е с л и C [ i ] > = 10
то
C[i + l ] : = C [ i - f П + 1
C [ i ] : = m o d ( C [ i ] , 10)
все
кц
если С [ К ] = 0
то
К : = К - 1
все
140
7.2. В ы ч и т а н и е м н о г о з н а ч н ы х чисел
Д л я о п р е д е л е н н о с т и б у д е м с ч и т а т ь , что А > В. Е с л и
нет, то н е о б х о д и м о п о м е н я т ь ч и с л а м е с т а м и , а р е з у л ь т а т
сделать отрицательным. (Подумайте, как определить,
к а к о е из чисел б о л ь ш е . )
Е с л и ч и с л о А состоит из N ц и ф р , т о г д а ч и с л о В не
м о ж е т и м е т ь б о л е е чем N ц и ф р . Р а з н о с т ь б у д е т с о д е р
ж а т ь не б о л е е чем N ц и ф р .
Н а й д е м р а з н о с т ь чисел А к В. Б у д е м в ы ч и т а т ь э л е
м е н т ы м а с с и в а В из э л е м е н т о в м а с с и в а А с с о о т в е т с т в у
ющими номерами. Полученные результаты будем хра
н и т ь в м а с с и в е С. Е с л и на к а к о м - т о ш а г е п о л у ч и м С [ г ' ] <
<С0, то к э л е м е н т у С [г] п р и б а в л я е м 10, а от э л е м е н т а
С [ г + 1 ] о т н и м а е м 1 ( з а б и р а е м 1 из с л е д у ю щ е г о р а з
ряда).
Алгоритм будет следующим:
н ц д л я i от 1 до N
|СП]:=0
кц
н ц д л я i от 1 до N
C[i]:=A[i]-B[i]
если C [ i ] < 0
то
С [i]: = С 10 (3.17)
C[i + l ] : = C [ i + l]-l
все
кц
нц п о к а С [N] = 0
| N : = N —1;
кц
141
7.3*. П р о и з в е д е н и е многозначных чисел
142
Полученные алгоритмы сложения, вычитания, умно
ж е н и я многозначных чисел м о ж н о использовать д л я
м о д е л и р о в а н и я д е й с т в и й н а д ч и с л а м и в к а к о й - л и б о си
с т е м е с ч и с л е н и я . Д л я этого н е о б х о д и м о п о м н и т ь , что
е с л и у н а с с и с т е м а с ч и с л е н и я и м е е т о с н о в а н и е р , то
р е д и н и ц одного р а з р я д а о б р а з у ю т е д и н и ц у нового р а з р я
д а . Д р у г и м и с л о в а м и , н е о б х о д и м о ч и с л о 10 в а л г о р и т м а х
(3.16), (3.17), (3.18) з а м е н и т ь о с н о в а н и е м с и с т е м ы с ч и с
ления.
1. О п р е д е л и т ь , я в л я е т с я л и д а н н о е ч и с л о ч е т н ы м .
2. Д в а н а т у р а л ь н ы х ч и с л а н а з ы в а ю т д р у ж е с т в е н н ы
ми, е с л и к а ж д о е из них р а в н о с у м м е всех д е л и т е л е й
другого, кроме самого этого числа. Н а й т и все п а р ы
д р у ж е с т в е н н ы х ч и с е л , л е ж а щ и х в д и а п а з о н е от п д о k.
3 . Н а й т и н а т у р а л ь н о е ч и с л о из д и а п а з о н а от я д о k,
которое имеет наибольшее количество делителей.
4. Р а з л о ж и т ь д р о б ь p/q на с у м м у д р о б е й в и д а 1/п.
Н а п р и м е р , при р = 3 , q = 7
17 = 14-
3
~
ПТ Т
4- J -
2 3 1 '
5. Н а й т и все с о в е р ш е н н ы е ч и с л а , м е н ь ш и е N. Ч и с л о
с о в е р ш е н н о , е с л и оно р а в н о с у м м е всех своих д е л и т е л е й ,
за исключением самого числа.
6. Л ю б у ю ц е л о ч и с л е н н у ю д е н е ж н у ю с у м м у , б о л ь ш у ю
7р., м о ж н о в ы п л а т и т ь б е з с д а ч и т р е ш к а м и и п я т е р к а м и
( д о к а ж и т е ) . Д л я д а н н о г о п>7 н а й т и все т а к и е ц е л ы е
н е о т р и ц а т е л ь н ы е а и Ь, что З а + 56 = я .
7. С о о б щ е с т в о р о б о т о в ж и в е т по с л е д у ю щ и м з а
конам:
143
1) один р а з в н а ч а л е г о д а они о б ъ е д и н я ю т с я в г р у п
пы по 3 или по 5 р о б о т о в ;
2) з а год г р у п п а из 3 р о б о т о в с о б и р а е т 5 новых,
а г р у п п а из 5 р о б о т о в с о б и р а е т 9 новых;
3) р о б о т ы о б ъ е д и н я ю т с я т а к , чтобы с о б р а т ь з а год
н а и б о л ь ш е е к о л и ч е с т в о р о б о т о в ; к а ж д ы й робот ж и в е т
3 года п о с л е с б о р к и .
И з в е с т н о н а ч а л ь н о е к о л и ч е с т в о р о б о т о в . Все они
т о л ь к о что с о б р а н ы .
Сколько роботов будет через N лет?
8. Д а н ы д в а н а т у р а л ь н ы х числа п и Ь , причем b —
нечетное ч и с л о б о л ь ш е 1.
О п р е д е л и т ь , что д е л а е т с л е д у ю щ и й н и ж е ф р а г м е н т
программы:
нц п о к а n > = b
е с л и m o d (п, 2 ) = = 0
то
n : = div (п, 2)
иначе
n: = n — b
все
кц
если п = 0
то
а : = «да»
иначе
а : ==«нет»
все
9. Д в а д в у з н а ч н ы х ч и с л а , з а п и с а н н ы х одно за д р у
гим, о б р а з у ю т ч е т ы р е х з н а ч н о е ч и с л о , к о т о р о е д е л и т с я на
их п р о и з в е д е н и е . Н а й т и эти ч и с л а .
10. Н а й т и н а т у р а л ь н ы е ч и с л а из о т р е з к а [я; /г], к о л и
чество д е л и т е л е й у к о т о р ы х я в л я е т с я п р о и з в е д е н и е м
двух простых чисел.
11. Д а н о н а т у р а л ь н о е число п. Н а й т и ч е т в е р к и про-
144
с т ы х чисел и м е н ь ш и х п, п р и н а д л е ж а щ и х о д н о м у д е с я т к у
( н а п р и м е р 11, 13, 17, 19).
12. Д а н о н а т у р а л ь н о е ч и с л о п. В ы я с н и т ь , и м е ю т с я л и
с р е д и чисел п, я - f - l , 2п ч и с л а - б л и з н е ц ы , т. е. п р о с т ы е
ч и с л а , р а з н о с т ь м е ж д у к о т о р ы м и р а в н а 2.
13. Д а н о н а т у р а л ь н о е ч и с л о п. П о л у ч и т ь все ч и с л а ,
в з а и м н о п р о с т ы е с п и м е н ь ш е его.
14. Д а н о н а т у р а л ь н о е число п. П о л у ч и т ь все его
простые делители.
15. Д а н ы н а т у р а л ь н ы е ч и с л а р и q. П о л у ч и т ь все
д е л и т е л и ч и с л а р, в з а и м н о п р о с т ы е с q.
16. Н а й т и й-е п р о с т о е число в а р и ф м е т и ч е с к о й п р о
г р е с с и и 11, 2 1 , 3 1 , 4 1 , 5 1 , 6 1 , ... . П р и в е с т и ответ д л я k —
= 1, 10, 100, 1000 и т. д.
17. С о к р а т и т ь д р о б ь а/b (а, Ъ — н а т у р а л ь н ы е ч и с л а ) .
18. Д а н ы 4 ц е л ы х ч и с л а а, Ь, с, d. Н а п и с а т ь п р о г р а м
му, в ы ч и с л я ю щ у ю с у м м у о б ы к н о в е н н ы х д р о б е й а/Ь-\-
-f-c/u* в в и д е х/у.
19. Д а н о н а т у р а л ь н о е число п. О п р е д е л и т ь к о л и ч е
с т в о сотен ( т ы с я ч , м и л л и о н о в ) в нем.
20. Ввести период дроби. Н а п е ч а т а т ь числитель
и знаменатель.
2 1 . Н а т у р а л ь н о е число из п ц и ф р я в л я е т с я ч и с л о м
А р м с т р о н г а , если с у м м а его ц и ф р , в о з в е д е н н ы х в п-ю
степень, р а в н а самому числу ( 1 5 3 = l - f - 5 - j - 3 ) . Полу
3 3 3
чить все ч и с л а А р м с т р о н г а д л я п — 2, 3, 4.
22. Д а н о н а т у р а л ь н о е ч и с л о п. Ч е м у р а в н а с у м м а его
цифр?
2 3 . Д а н о н а т у р а л ь н о е ч и с л о п. В е р н о л и , что с у м м а
ц и ф р этого ч и с л а я в л я е т с я н е ч е т н о й ?
2 4 . Д а н о н а т у р а л ь н о е ч и с л о п. В е р н о л и , что это
число содержит ровно три одинаковые цифры? Если да,
то у к а ж и т е эти ц и ф р ы .
2 5 . П о с ч и т а т ь с у м м у ц и ф р всех ц е л ы х чисел от
I до N.
26. Д а н о н а т у р а л ь н о е число п. В ы б р о с и т ь из з а п и с и
ч и с л а п все ц и ф р ы , р а в н ы е 1, о с т а в и в при этом п р е ж н и м
145
п о р я д о к о с т а л ь н ы х ц и ф р . Н а п р и м е р , из 5101234 ->- 50234.
27. Из записи натурального числа выбросить цифры
1 и 5, о с т а в и в п р е ж н и м п о р я д о к ц и ф р . Н а п р и м е р , ч и с л о
527012 преобразуется в число 2702.
28. Найти такие две р а з л и ч н ы е наименьшие степени
натурального числа я, у которых три последние цифры
одинаковы.
2 9 . Д а н о н а т у р а л ь н о е ч и с л о п. В ы б р о с и т ь из з а п и с и
ч и с л а все ч е т н ы е ц и ф р ы .
3 0 . Д а н о н а т у р а л ь н о е ч и с л о п. О п р е д е л и т ь , я в л я е т с я
л и оно п а л и н д р о м о м ( ч и т а е т с я о д и н а к о в о с н а ч а л а
и с конца).
3 1 . Н а й т и все ч и с л а из д и а п а з о н а от п д о т, к о т о р ы е
при в о з в е д е н и и в к в а д р а т д а ю т п а л и н д р о м .
3 2 . Н а й т и в с е ч и с л а - п а л и н д р о м ы из д и а п а з о н а от
п д о т, к о т о р ы е п р и в о з в е д е н и и в к в а д р а т т а к ж е д а ю т
палиндромы.
3 3 . Н а й т и о с т а т о к от д е л е н и я ч и с л а , з а п и с ы в а е м о г о
с п о м о щ ь ю k с е м е р о к , на ч и с л о а, к и а — з а д а н н ы е
натуральные числа.
34. Все н а т у р а л ь н ы е числа в ы п и с а н ы подряд, на
ч и н а я с е д и н и ц ы . О п р е д е л и т ь , к а к а я ц и ф р а с т о и т на
N-u м е с т е .
3 5 . Н а и н т е р в а л е (1000; 9 9 9 9 ) н а й т и в с е п р о с т ы е
ч и с л а , к а ж д о е из к о т о р ы х о б л а д а е т т е м с в о й с т в о м , что
с у м м а п е р в о й и второй ц и ф р з а п и с и этого ч и с л а р а в н а
сумме третьей и четвертой.
3 6 . В ы с а д и в ш и с ь на п л а н е т е А л ь ф а , н а с е л е н н о й р а
з у м н ы м и « о с ь м и н о г а м и » , к о с м о н а в т ы увидели, н а п и с а н
н у ю на с т е н е б л и з л е ж а щ е г о с т р о е н и я ф о р м у л у 9 9 - 9 9 =
= 1210. С к о л ь к о щ у п а л ь ц е в б ы л о у н а с е л я в ш и х п л а н е т у
А л ь ф а «осьминогов»?
3 7 . С р е д и п р о с т ы х ч и с е л , не п р е в о с х о д я щ и х N, н а й т и
такое, в двоичной записи которого м а к с и м а л ь н о е число
единиц.
3 8 . Н а й т и д в о и ч н о е п р е д с т а в л е н и е д л я чисел Ф е р м а ,
которые представимы в виде 2 '+1.
2
146
39. З а д а н а п о с л е д о в а т е л ь н о с т ь д л и н ы N, с о с т о я щ а я
из е д и н и ц и н у л е й . О п р е д е л и т ь к о л и ч е с т в о М - з н а ч н ы х
д в о и ч н ы х чисел (M^N), входящих в указанную последо
в а т е л ь н о с т ь , к о т о р ы е д е л я т с я на 2 1 .
40. Н а п е ч а т а т ь ш е с т н а д ц а т е р и ч н у ю т а б л и ц у у м н о ж е
н и я т а к ж е , к а к п е ч а т а ю т о б ы ч н у ю на о б л о ж к е т е т р а д и .
41. Д е с я т и ч н а я дробь определяется следующим об
разом:
[— ] abc...d[.efg...h],
г д е а, Ь, с, й, е, /, g, h — д е с я т и ч н ы е ц и ф р ы от
0 д о 9, э л е м е н т ы в к в а д р а т н ы х с к о б к а х не я в л я ю т с я
о б я з а т е л ь н ы м и . Н а й т и к о р е н ь у р а в н е н и я Х/А — В (А и
В — д е с я т и ч н ы е д р о б и ) , п р е д с т а в и в его в в и д е д е с я т и ч н о й
д р о б и , с о х р а н и в в с е ее д е с я т и ч н ы е з н а к и .
42. Н а п и с а т ь п р о г р а м м у , к о т о р а я в ы ч и с л я е т з н а ч е
ние в ы р а ж е н и я .
l_i._L.I_... _(_!)«!.
-г2 3 v ч - п
А [ 1 ] = 1, A [N + 1] = Л [N\+ 1/(Л
147
39856
8503
119568
+199280
318848
338895568
Произведение: 33889.5568.
4 6 . О п р е д е л и т ь к о л и ч е с т в о п о в т о р е н и й к а ж д о й из
ц и ф р 0, 1, 2, 9 в числе N , N < 1 0 0 0 .
N
4 7 . Н а й т и ч а с т н о е от д е л е н и я а/b с т о ч н о с т ь ю k ц и ф р
п о с л е з а п я т о й . Ч и с л а а и b в в о д я т с я с не б о л е е чем
200 ц и ф р а м и .
48. Д а н ы две таблицы: М М , ..., М, ; N N ,
ь 2 0 h 2 N. i0
К а ж д ы й э л е м е н т л и б о о д н а из ц и ф р 0, 1, 9, л и б о
д е с я т и ч н а я т о ч к а ( о н а п о я в л я е т с я не б о л е е одного р а з а ) .
Написать алгоритм сравнения «записанных» в табли
цу в е л и ч и н . Н а п р и м е р :
1 2 4 5 6 7 8 9 10
СО
м 3 4 1 7 4 9 0 0 0
N 0 0 0 0 0 0 0 3 4 2
с у м м е всех В Д о к а з а т ь , что м о ж н о п о с т р о и т ь (и о п и с а т ь
г
148
1) все (i, j) н е о т р и ц а т е л ь н ы е ч и с л а ;
2) в м а с с и в е по к р а й н е й м е р е ( m — 1 ) нулей;
3) с у м м а к а ж д о й г-й с т р о к и р а в н а Ац
4) с у м м а к а ж д о г о / - г о с т о л б ц а р а в н а В- г
1. Ч и с л о з а д а н о своим д в о и ч н ы м п р е д с т а в л е н и е м
( д л и н а ч и с л а не п р е в ы ш а е т 10 000 д в о и ч н ы х р а з р я д о в ) .
Н е о б х о д и м о о п р е д е л и т ь , д е л и т с я л и ч и с л о на 15.
2. а ) К а к - т о р а з в а п т е к у д о с т а в и л и 10 ф л а к о н о в по
1000 п и л ю л ь . Н е у с п е л п р о в и з о р р а с с т а в и т ь
ф л а к о н ы на п о л к е , к а к п о ч т а л ь о н п р и н е с т е л е
г р а м м у , в которой б ы л о с л е д у ю щ е е :
«Воздержаться от п р о д а ж и л е к а р с т в а . По
о ш и б к е ф а р м а ц е в т а в одном из ф л а к о н о в к а ж
д а я п и л ю л я с о д е р ж и т на 1 мг л е к а р с т в а б о л ь ш е
допустимой дозы. Просьба незамедлительно
в е р н у т ь ф л а к о н с п о в ы ш е н н о й дозой л е к а р
ства».
Сколько взвешиваний придется сделать провизору
д л я определения ф л а к о н а с повышенной дозой л е к а р с т
ва, если м а с с а п и л ю л и с д о п у с т и м о й дозой л е к а р с т в а
р а в н а 10 мг?
б) Ч е р е з к а к о е - т о в р е м я в а п т е к у д о с т а в и л и е щ е
10 ф л а к о н о в того ж е л е к а р с т в а . И на этот р а з не
успели р а с п а к о в а т ь коробку с ф л а к о н а м и , как
п о ч т а л ь о н п р и н е с т е л е г р а м м у с и з в е щ е н и е м о том,
что на этот р а з ф а р м а ц е в т д о п у с т и л б о л е е с е р ь
е з н у ю о ш и б к у . В п о с ы л к е м о г л и о к а з а т ь с я от 1 до
10 ф л а к о н о в с п и л ю л я м и , к а ж д ы й из к о т о р ы х на
1 мг т я ж е л е е н о р м ы .
Сколько взвешиваний придется сделать провизору
в этот р а з д л я определения флаконов с повышенной
дозой л е к а р с т в а ?
3 . П р е д п о л о ж и м , что у н а с е с т ь в е с ы с д в у м я ч а ш а м и
и по одной ш т у к е г и р ь 1, 3, 9, 27, . . . , 3*, . . . . У р а в н о в е
с и т ь г р у з м а с с о й М на в е с а х .
149
4. Сосчитать количество единиц в двоичной записи
ч и с л а /, з а д а н н о г о в д е с я т и ч н о й с и с т е м е с ч и с л е н и я .
5. П о с л е д о в а т е л ь н о с т ь 0 1 1 2 1 2 2 0 1 2 2 0 2 0 0 1 1 2 . . . с т р о и т
с я с л е д у ю щ и м о б р а з о м . С н а ч а л а п и ш е т с я 0, з а т е м повто
ряется следующее действие: у ж е написанную часть при
п и с ы в а ю т с п р а в а с з а м е н о й 0 на 1, 1 на 2, 2 на 0, т. е.
10. П у с т ь з а п и с ь ч и с л а А в п о з и ц и о н н ы х с и с т е м а х
150
с ч и с л е н и я с о с н о в а н и е м р и q и м е е т вид бесконечной
п е р и о д и ч е с к о й д р о б и с п е р и о д о м 2:
где афЬ.
Написать программу, которая для введенных нату
р а л ь н ы х чисел р и q ( 2 < р , я < 3 0 , p>q) находит и вы
в о д и т все в о з м о ж н ы е п а р ы з н а ч е н и й ц и ф р а и Ь, у д о в
л е т в о р я ю щ и х с о о т н о ш е н и ю (*). Е с л и т а к о в ы х нет, в ы в е
сти с о о б щ е н и е « П р и г о д н ы х ц и ф р нет».
цифры),
л. ч
является _ +, _d +I _ +. _/ . .
с е
1/3 и 2 / 3 и у д а л и м из него и н т е р в а л ( 1 / 3 , 2 / 3 ) . П о л у ч и м
м н о ж е с т в о / ( , , с о с т о я щ е е из д в у х о с т а в ш и х с я о т р е з к о в
[О, 1/3] и [ 2 / 3 , 1]. К а ж д ы й из них р а з д е л и м на т р и ч а с т и
( т о ч к а м и 1/9 и 2 / 9 д л я п е р в о г о о т р е з к а и т о ч к а м и
7 / 9 и 8 / 9 — д л я второго) и удалим средние интервалы
( 1 / 9 , 2 / 9 ) и ( 7 / 9 , 8/9). Таким образом, получаем мно
ж е с т в о /С и т. д . П у с т ь м ы п о с т р о и м м н о ж е с т в о K .
2 t
П о д е л и м к а ж д ы й о с т а в ш и й с я о т р е з о к из /С,- на 3 ч а с т и
и у д а л и м из э т и х с е г м е н т о в с р е д н и е и н т е р в а л ы . П о л у
ч и м , т а к и м о б р а з о м , из множество K .
i+i
В в о д я т с я 3 ц е л ы х ч и с л а п, а, Ь. Н е о б х о д и м о о п р е д е
л и т ь , п р и н а д л е ж и т л и т о ч к а с к о о р д и н а т о й а/Ь м н о ж е
ству К - п
12. Ч и с л о н а з ы в а е т с я с о в е р ш е н н ы м , е с л и оно р а в н о
с у м м е всех своих д е л и т е л е й , з а и с к л ю ч е н и е м его с а м о г о .
Л ю б о е четное совершенное число представимо в виде
2 ( 2 — 1 ) , где р — простое число.
Р - 1 Р
а т о м ы или г р у п п ы а т о м о в . Н а п и с а т ь а л г о р и т м д л я п р о
х о ж д е н и я т а к и х н а т у р а л ь н ы х к о э ф ф и ц и е н т о в , п р и кото
р ы х с т р е л к у м о ж н о б ы л о бы з а м е н и т ь з н а к о м р а в е н с т в а .
14. В в о д я т с я ц е л ы е ч и с л а а и Ь. П у с т ь у т р е у г о л ь н и
ка АБС к о о р д и н а т ы в е р ш и н Л (0; 0), В (а; Ь), а о б е
к о о р д и н а т ы С (х\ у) — ц е л ы е ч и с л а , и п л о щ а д ь т р е у г о л ь
н и к а ABC не р а в н а н у л ю . К а к у ю м и н и м а л ь н у ю п л о щ а д ь
может иметь треугольник ЛВС?
15. И м е е т с я N б а н о к с ц е л о ч и с л е н н ы м и о б ъ е м а м и V , {
V л и т р о в , пустой с о с у д и к р а н с водой. М о ж н о л и
n
с п о м о щ ь ю этих б а н о к н а л и т ь в с о с у д р о в н о V л и т р о в
воды?
16. В ы ч и с л и т ь ч и с л о е ( о с н о в а н и е н а т у р а л ь н о г о л о г а
р и ф м а ) с т о ч н о с т ь ю п з н а ч а щ и х д е с я т и ч н ы х ц и ф р после
з а п я т о й . М о ж н о и с п о л ь з о в а т ь числовой р я д
Е = =
1 + - J J + 2Т + --- + 3 4 Т + --- •
на Р .
м + {
2 0 . Н а т у р а л ь н о е число N> 1 п р е д с т а в и т ь в в и д е
с у м м ы н а т у р а л ь н ы х с л а г а е м ы х т а к , ч т о б ы их п р о и з в е д е
ние б ы л о м а к с и м а л ь н ы м .
21. З а д а е т с я любое положительное действительное
число R. Н а й т и п о л о ж и т е л ь н ы е д е й с т в и т е л ь н ы е /?,, R , 2
2) ш т р а ф с-, з а к а ж д ы е сутки о ж и д а н и я р а б о т ы i до
м о м е н т а н а ч а л а ее в ы п о л н е н и я .
Одновременно может выполняться только одна рабо
т а , и если м а с т е р п р и с т у п а е т к в ы п о л н е н и ю н е к о т о р о й
р а б о т ы , то он п р о д о л ж а е т в ы п о л н я т ь ее, п о к а не з а к о н
чит. С у м м а р н ы й ш т р а ф , к о т о р ы й н а д о б у д е т у п л а т и т ь ,
выражается следующим образом:
с у м м а с , - ( в р е м я н а ч а л а в ы п о л н е н и я р а б о т ы г) по всем L
венно;
2) м а с с а г'-го а р б у з а т , есть с р е д н е е а р и ф м е т и ч е с к о е
м а с с д в у х с о с е д н и х а р б у з о в , у в е л и ч е н н о е на d:
m = d + (m .„
i i x + m )/2;
i+l
153
П о в в е д е н н ы м tn m , N, d и / н а й т и т- О г р а н и ч е н и е :
u N г
#<200.
Необходимо в р а м к а х формулировки задачи преду
смотреть проверку корректности данных программы.
1. Н а т у р а л ь н о е ч и с л о , з а п и с а н н о е в д е с я т и ч н о й с и
с т е м е с ч и с л е н и я , н а з ы в а е т с я с в е р х п р о с т ы м , е с л и оно
остается простым при любой перестановке своих цифр.
Определить, является ли данное число сверхпростым.
2. П о с л е д о в а т е л ь н о с т ь , с о с т о я щ у ю из ч е т ы р е х ц е л ы х
ч и с е л а, Ь, с, d, о д н и м х о д о м м о ж н о п р е о б р а з о в а т ь
в п о с л е д о в а т е л ь н о с т ь \a — b\, \b — c\, \c — d\, \d — a\.
Д о к а з а т ь , что к а к о й б ы ни б ы л а н а ч а л ь н а я п о с л е д о
вательность, многократным повторением ходов м о ж н о
п о л у ч и т ь п о с л е д о в а т е л ь н о с т ь , с о с т о я щ у ю из ч е т ы р е х
нулей.
3 . Д а н о ц е л о е н е о т р и ц а т е л ь н о е ч и с л о К, не п р е в ы ш а
ю щ е е м и л л и о н а . Н а п е ч а т а т ь ф р а з у «К в о р о н » р у с с к и м и
с л о в а м и . ( Н а п р и м е р , е с л и /С ==23, то д о л ж н о б ы т ь н а п е
ч а т а н о « д в а д ц а т ь т р и в о р о н ы » , е с л и К=1, то — « о д н а
ворона».)
4. Н а п и с а т ь п р о г р а м м у , п е р е в о д я щ у ю з а д а н н у ю с у м
му в р у б л я х ( д о 3 0 0 0 0 т ы с я ч в к л ю ч и т е л ь н о ) в ее п о л н о е
название. (Например:
С У М М А ? 29320,25 — Д В А Д Ц А Т Ь Д Е В Я Т Ь Т Ы С Я Ч
ТРИСТА ДВАДЦАТЬ РУБЛЕЙ ДВАДЦАТЬ ПЯТЬ
КОПЕЕК
С о к р а щ а т ь слова нельзя.
5. Н а п и с а т ь п р о г р а м м у , к о т о р а я в ы д а с т с л о в а м и н а
звание введенного действительного числа. ( Н а п р и м е р :
25.23 — д в а д ц а т ь пять целых д в а д ц а т ь три сотых.)
6. Ч и с л о я в л я е т с я п а л и н д р о м о м , е с л и оно ч и т а е т с я
одинаково слева направо и справа налево. Рассмотрим
н е к о т о р о е н а т у р а л ь н о е ч и с л о N. Е с л и э т о ч и с л о не
п а л и н д р о м , то и з м е н и м п о р я д о к е г о ц и ф р на о б р а т н ы й
и с л о ж и м исходное число с получившимся. Если сумма
154
не п а л и н д р о м , то н а д ней п о в т о р я е м то ж е д е й с т в и е
и т. д., п о к а не п о л у ч и т с я п а л и н д р о м . Д о н а с т о я щ е г о
времени неизвестно, з а в е р ш а е т с я ли этот процесс д л я
л ю б о г о н а т у р а л ь н о г о N.
Д а н ы н а т у р а л ь н ы е ч и с л а К, L, М (K^L). Проверить,
в е р н о л и , что д л я л ю б о г о н а т у р а л ь н о г о ч и с л а из д и а п а
з о н а от К до L п р о ц е с с з а в е р ш а е т с я не п о з д н е е , чем
п о с л е М т а к и х д е й с т в и й . Е с л и нет, то в ы д а т ь ч и с л а , д л я
к о т о р ы х п р о ц е с с не з а в е р ш и л с я , и к о л и ч е с т в о т а к и х
чисел.
7. В с е к в а д р а т ы н а т у р а л ь н ы х ч и с е л в ы п и с а н ы п о д
ряд, начиная с единицы. Определить, к а к а я цифра
с т о и т на N-м м е с т е .
8. Д о к а з а т ь , что в 1 6 - р а з р я д н о й Э В М с о б ъ е м о м О З У
192 К б а й т в л ю б о й м о м е н т в р е м е н и t с у щ е с т в у ю т д в е
ячейки, содержащие одинаковые числа.
9. Р и м с к и е ч и с л а .
а) Проверить, правильна ли запись числа римскими
цифрами.
б) З а п и с а т ь д а н н о е ц е л о е ч и с л о из д и а п а з о н а от 1 д о
1999 р и м с к и м и ц и ф р а м и .
в) П е р е в е с т и ч и с л о , з а п и с а н н о е р и м с к и м и ц и ф р а м и ,
в десятичную систему счисления.
10. М о ж н о л и р а з б и т ь в с е н а т у р а л ь н ы е ч и с л а 1, 2, 3 ,
4 , 6, . . . н а д в е т а к и е в о з р а с т а ю щ и е п о с л е д о в а т е л ь н о с т и
а „ а а ,...
ь 3 и b b , Ь , ч т о b — a = k д л я л ю б о г о k — 1,
b 2 3 k k
11. П о с л а н и е от в н е з е м н о й ц и в и л и з а ц и и п р е д с т а в л я
ет с о б о й н а б о р из N с и м в о л о в , к а ж д ы й из к о т о р ы х
я в л я е т с я нулем или единицей. Число N я в л я е т с я про
изведением двух простых чисел и ученые п р е д п о л а г а ю т ,
что э т а с т р о к а — з а к о д и р о в а н н а я п р я м о у г о л ь н а я « к а р
т и н к а » , р а з м е р ы к о т о р о й — м н о ж и т е л и ч и с л а N.
Составить программу, которая производит перекоди
ровку послания и печатает картинки, заменяя каждый
нуль пробелом, а единицу — звездочкой.
155
Пример:
N = 55
Послание:
1010001011110100100000000101111010001010010010010
100100010111
12. Ч и с л а 4 6 8 1 6 и 1 6 0 1 2 5 п р е д с т а в л е н ы в р а з н ы х
м Л
если 1.
В ы ч и с л и т ь все ц и ф р ы п е р е д з а п я т о й а
юоо ч л е н а .
14. Н а п и с а т ь а л г о р и т м , к о т о р ы й д л я в е щ е с т в е н н о г о
ч и с л а х н а х о д и т с у м м у х ' , где k=l,
к к
2, 128, и с п о л ь
з у я не б о л е е 2 5 8 у м н о ж е н и й и 256 с л о ж е н и й , у ч и т ы в а я
о п е р а ц и и о р г а н и з а ц и и ц и к л а ( в о з в е д е н и е в с т е п е н ь не
использовать).
15. С о с т а в и т ь п р о г р а м м у , к о т о р а я в ы п о л н я е т с л о ж е
ние д в у х п я т и р а з р я д н ы х д в о и ч н ы х ч и с е л , п о л ь з у я с ь опе
р а ц и я м и « И » , « И Л И » , « Н Е » и « С Д В И Г В Л Е В О » (на
один р а з р я д ) , к о т о р ы е в ы п о л н я ю т с я т а к :
3 ) С= А ; п е р е м е н н о й С п р и с в а и в а е т с я з н а ч е н и е чис
л а А, в к о т о р о м н у л и з а м е н я ю т с я на 1, а е д и н и
цы — на 0 ( О п е р а ц и я « Н Е » ) .
2) С — А\/В— п о р а з р я д н а я операция, результат вы
полнения которой определяется таблицей 1 (Опе
рация «ИЛИ»).
ТАБЛИЦА 1
0\/0 = 0
0v 1= 1
1 V 0 == 1
1V1 = 1
3) С = А/\В — п о р а з р я д н а я операция, результат вы
п о л н е н и я которой о п р е д е л я е т с я т а б л и ц е й 2 ( О п е
р а ц и я «И»),
156
ТАБЛИЦА 2
0Д0 = 0
0Д1=0
1Д0 = 0
1А1 = 1
4 ) С — -*-А — п о р а з р я д н ы й с д в и г в л е в о , т. е. i-я р а з
ряд С получает значение ( г + 1 ) - г о разряда числа
А, 5-й ( м л а д ш и й ) р а з р я д С с т а н о в и т с я р а в н ы м 0.
К а ж д о е из и с х о д н ы х ч и с е л м е н ь ш е 10 0 0 0 . 2
16. Д л я з а д а н н о г о К н а й т и т а к о е N, что в д е с я т и ч н о м
числе 2 встретится К нулей подряд.
V
17. П о з а д а н н о м у п с о с т а в и т ь п р о г р а м м у в ы ч и с л е н и я
19. И з з а д а н н о г о н а т у р а л ь н о г о ч и с л а в ы ч е р к н у т ь
k цифр так, чтобы полученное число было возможно
большим.
2 0 . Н а й т и в с е д е с я т и ч н ы е ц и ф р ы ч и с л а 100! — 2 . 1 0 0
2 1 . Н а п р а в и л ь н о и д у щ и х ч а с а х с 1 2 - ч а с о в ы м ци
ферблатом имеются часовая, минутная и секундная
стрелки, движущиеся плавно (без скачков).
В к а к о е в р е м я все с т р е л к и о б р а з у ю т м е ж д у собой
у г л ы 120°? К а к д о л г о з а с у т к и у г л ы , о б р а з о в а н н ы е
м е ж д у всеми стрелками, одновременно будут в пределах
от 119° д о 121°?
2 2 . З а д а н а т а б л и ц а ч и с е л . А л г о р и т м на к а ж д о м ш а г е
в ы б и р а е т в этой т а б л и ц е с т р о к у ( и л и с т о л б е ц ) , с у м м а
157
э л е м е н т о в к о т о р о й м е н ь ш е н у л я , и у м н о ж а е т все эти
э л е м е н т ы на ( — 1).
Д о к а з а т ь , что а л г о р и т м не м о ж е т р а б о т а т ь б е с к о
нечно д о л г о .
2 3 . Д а н о н а т у р а л ь н о е ч и с л о п, я в л я ю щ е е с я к в а д р а
том н е к о т о р о г о д р у г о г о н а т у р а л ь н о г о ч и с л а .
С о с т а в и т ь п р о г р а м м у , к о т о р а я в ы ч и с л я е т га , ис
1/2
цел а л г F ( ц е л к )
нач
ц е л с, m, a l , а 2
с : = 0 ; a l : = l, а 2 : = — 3 ; т : = = 1
нц пока т < к
если а 1 > 0
то
с : ==c-f-m
иначе
с: = с — т
все
a l : = = a l + a2; а 2 : = = a l — а2; a l : = = a l — а2;
т : = rn + 1
кц
з н а ч : ==с
кон
П р и д у м а т ь а л г о р и т м д л я в ы ч и с л е н и я этой ф у н к ц и и ,
в з а п и с и к о т о р о г о не и с п о л ь з у ю т с я к о м а н д ы в е т в л е н и я
и цикла.
2 5 . В ы ч и с л и т ь з н а ч е н и е ф у н к ц и и F(n) = m, г д е т —
ч и с л о з н а к о в , с о д е р ж а щ и х с я в д е с я т и ч н о й з а п и с и чис
л а га!
2 6 . И з в е с т н о , что д л я л ю б ы х н а т у р а л ь н ы х чисел
а и Ь с у щ е с т в у ю т т а к и е ц е л ы е ч и с л а и и v, что с п р а
в е д л и в а ф о р м у л а : au-{-bv = WOJX(а, Ь). П о в в е д е н н ы м
а и Ь н а й т и к а к и е - н и б у д ь и и v.
158
2 7 . В к р у г е стоит N ч е л о в е к , п р о н у м е р о в а н н ы х п о
п о р я д к у от 1 д о N. П р и р а с ч е т е на п е р в ы й - в т о р о й ,
н а ч и н а я с п е р в о г о ч е л о в е к а , к а ж д ы й в т о р о й в ы х о д и т из
к р у г а , до тех п о р , п о к а не о с т а н е т с я один ч е л о в е к .
Д о к а з а т ь , что его н о м е р м о ж н о н а й т и с л е д у ю щ и м
образом: представить N в двоичной системе счисления,
з а т е м поставить крайний левый единичный бит числа
после самого правого р а з р я д а числа.
Например: N = 1 2 = 1 1 0 0 2 , номер последнего человека
1 0 0 1 = 9.
2
!. В с п о м н и м , что п р и з н а к о м д е л е н и я на 9 в д е с я т и ч
ной с и с т е м е с ч и с л е н и я я в л я е т с я д е л и м о с т ь на 9 с у м м ы
цифр числа. Действительно, пусть есть число
тогда
А т а к к а к I0 — k
1 д е л и т с я н а 9 н а ц е л о , то и
S m o d 9 = ( а + . . . + а , + а ) m o d 9.
я 0
А н а л о г и ч н о п о л у ч а е м , что п р и з н а к о м д е л е н и я на
15 в с и с т е м е с ч и с л е н и я с о с н о в а н и е м 16 б у д е т д е л и м о с т ь
на 15 с у м м ы всех ш е с т н а д ц а т е р и ч н ы х ц и ф р ч и с л а .
Р а з б и в а е м д в о и ч н о е ч и с л о с п р а в а н а л е в о на т е т р а д ы ,
которые однозначно можно преобразовать в шестнадца-
т е р и ч н ы е ц и ф р ы , н а х о д и м их с у м м у и д е л и м ее на 15. Е с
л и о с т а т о к 0, то в в е д е н н о е ч и с л о д е л и т с я на 15, и н а ч е —
не д е л и т с я .
2. а ) Д л я р е ш е н и я з а д а ч и не н у ж н о в з в е ш и в а т ь
п и л ю л и из к а ж д о г о ф л а к о н а , т. е. п р о и з в о д и т ь 10 в з в е -
159
ш и в а н и й . Д о с т а т о ч н о одного в з в е ш и в а н и я д л я о п р е д е л е
ния ф л а к о н а с п о в ы ш е н н о й д о з о й л е к а р с т в а .
Д л я этого н е о б х о д и м о в з я т ь 1 п и л ю л ю из п е р в о г о ,
2 п и л ю л и из в т о р о г о , 3 п и л ю л и из т р е т ь е г о ... 10 п и л ю л ь
из д е с я т о г о ф л а к о н а . З а т е м с л е д у е т п о л о ж и т ь 5 5 ото
б р а н н ы х п и л ю л ь на одну ч а ш у в е с о в и в з в е с и т ь их. Е с л и
б ы все п и л ю л и б ы л и с д о п у с т и м о й д о з о й л е к а р с т в а , их
м а с с а с о с т а в и л а б ы 550 мг. П р е д п о л о ж и м , что п и л ю л и
в е с и л и 551 мг, или на 1 мг б о л ь ш е , чем с л е д у е т . Это
з н а ч и т , что и м е е т с я р о в н о о д н а п и л ю л я с п о в ы ш е н н о й
дозой л е к а р с т в а , а ровно одна пилюля была извлечена
из п е р в о г о ф л а к о н а . Е с л и бы м а с с а 55 п и л ю л ь о к а з а л а с ь
на 3 мг б о л ь ш е н о р м ы , то э т о о з н а ч а л о б ы , что с р е д и
отобранных пилюль имеются 3 пилюли с повышенной
д о з о й л е к а р с т в а . И х м о ж н о б ы л о и з в л е ч ь т о л ь к о из
третьего флакона. Таким образом количество взвешива
ний м о ж н о п о н и з и т ь д о 1.
б) М е т о д р е ш е н и я , п о з в о л и в ш и й з а одно в з в е ш и в а н и е
определить флакон, содержащий лекарства с повышен
ной д о з о й , в д а н н о м с л у ч а е не п р и м е н и м , о д н а к о его
можно модифицировать.
Д л я того чтобы р е ш и т ь з а д а ч у , н е о б х о д и м о в о с п о л ь
з о в а т ь с я п о с л е д о в а т е л ь н о с т ь ю , к о т о р а я бы с о п о с т а в л я
л а к а ж д о м у ф л а к о н у о т л и ч н ы й от д р у г и х н о м е р и о б л а
д а л а бы еще одним дополнительным свойством: сумма
членов л ю б о й ее п о д п о с л е д о в а т е л ь н о с т и д о л ж н а б ы т ь
о т л и ч н о й от с у м м ы ч л е н о в л ю б о й д р у г о й ее п о д п о с л е д о
вательности. Примером такой последовательности может
с л у ж и т ь с л е д у ю щ а я : 1, 2, 4, 8, в с е ч л е н ы ее — с т е п е
ни ч и с л а 2. Э т а п о с л е д о в а т е л ь н о с т ь л е ж и т в основе
двоичной системы счисления.
Р е ш е н и е з а д а ч и состоит в т о м , ч т о б ы в з я т ь 1 п и л ю л ю
из п е р в о г о з а к о н а , 2 п и л ю л и из в т о р о г о , 4 п и л ю л и из
т р е т ь е г о и т. д., з а т е м с о б р а т ь все о т о б р а н н ы е п и л ю л и
и в з в е с и т ь . П р е д п о л о ж и м , что п и л ю л и о к а з а л и с ь на
27 мг т я ж е л е е , чем н у ж н о . Т а к к а к к а ж д а я п и л ю л я
с п о в ы ш е н н о й д о з о й л е к а р с т в а т я ж е л е е н о р м а л ь н о й на
160
1 мг, то, р а з д е л и в 27 на 1, мы п о л у ч и м 27 — ч и с л о б о л е е
тяжелых пилюль.
З а п и ш е м ч и с л о 27 в д в о и ч н о й с и с т е м е : 11011. Д в о
ичные р а з р я д ы , в которых стоят единицы, говорят нам,
к а к и е степени ч и с л а 2 в с у м м е д а ю т д в о и ч н о е ч и с л о
11011 ( и л и д е с я т и ч н о е ч и с л о 27): 1, 2, 8, 16. Е д и н и ц ы
стоят в первом, втором, четвертом и пятом двоичных
р а з р я д а х . Следовательно, непригодные пилюли с повы
шенным содержанием лекарства находятся в первом,
в т о р о м , ч е т в е р т о м и пятом ф л а к о н а х .
3. П р и п р е д с т а в л е н и и ч и с л а в т р о и ч н о й с и с т е м е счис
л е н и я о б ы ч н о и с п о л ь з у ю т с я ц и ф р ы 0, 1 и 2. О д н а к о
м о ж н о и с п о л ь з о в а т ь ц и ф р ы 1, 0 и — 1 . Д л я п о л у ч е н и я
такой записи поступим следующим образом: будем пере
водить М в троичную систему счисления, и к а ж д ы й раз,
к о г д а при д е л е н и и на 3 б у д е т п о л у ч а т ь с я 2, б у д е м у в е л и
ч и в а т ь ч а с т н о е на 1, а в о с т а т к е п и с а т ь (— 1). Н а п р и м е р :
2 4 = 1000 — 10 = 1 - З + 0 - З — 1 - 3 + 0-3°.
ш 3 3
3 2
!
Г р у з V п о л о ж и м на п е р в у ю ч а ш у в е с о в . Г р у з ы с ко
э ф ф и ц и е н т о м в р а з л о ж е н и и — 1 п о с т а в и м на эту ж е
ч а ш у , а г р у з ы с к о э ф ф и ц и е н т о м 1 — на д р у г у ю .
О б ъ я с н и т е , почему д а н н ы й а л г о р и т м р а б о т а е т .
Опишите процесс уравновешивания груза неизвест
ной м а с с ы на ч а ш е ч н ы х в е с а х , и с п о л ь з у я ту ж е с и с т е м у
гирь.
4. А л г о р и т м :
Пример. 110 = /
101 = г - 1
100 = 1 a n d (t— 1)
п р е д с т а в л е н и и ч и с л а /г. Д о к а з а т е л ь с т в о п р о в е д е м по
и н д у к ц и и . Д л я а = 0 это с п р а в е д л и в о . П у с т ь п р е д п о л о
0
ж е н и е с п р а в е д л и в о д л я всех а 0 ^ г * ^ 2 * — 1 (т. е. д л я
ь
- 1
В о з ь м е м а m o d 3 и п о л у ч и м ч и с л о , с т о я щ е е на г-м м е
;
1XOR1=0 1XOR0=l
0 X O R 0 = 0 0XOR 1= 1
162
Оператор Значение в Л Значение в В
А = Л XOR В AXORB В
B = AXORB A XOR В (Л X O R S ) X O R В =
=А X O R ( B X O R B ) =
=AXOR0=A
А=А X O R В (A X O R В) X O R Л = Л
= В X O R ^ XORЛ) = B
7. Е с л и р а с с м о т р е т ь б и т о в ы е п р е д с т а в л е н и я ч и с л а
Л [г, / ] , п о м е ч а ю щ е г о точку (г, / ) , и ч и с е л г и /, то о б н а р у
ж и в а е т с я , что Л [/', /] = i X O R / , о т к у д а п о л у ч а е т с я , что
Л [г, / ] X O R / = / , Л [/, / ] X O R j = i.
П о к а ж е м , что Л [г, / ] = = / X O R / .
1) Ч и с л о Л [/, / ] = / X O R / не в с т р е ч а л о с ь е щ е ни
в с т р о к е i, ни в с т о л б ц е / . О т п р о т и в н о г о : с у щ е с т в у е т
т а к о е / ' , что
i XOR j = i XOR XOR / XOR t =
= i X O R / ' X O R i = > / ' = /;
2) П у с т ь с у щ е с т в у е т т а к о е £ < i X O R /', что & =
= / X O R L — j X O R Af, и k е щ е не в с т р е ч а л о с ь в с т р о к е
i и с т о л б ц е / ( н а п о м н и м , что по п р е д п о л о ж е н и ю в с е
остальные у ж е заполненные элементы равны i XOR /,
поэтому L>j и M>i).
Т о г д а , т а к к а к M>i, то с у щ е с т в у е т б и т с н о м е р о м
t т а к о й , что д л я л ю б о г о R>t биты М и i равны,
г r t=u
б и т М =\,
( /( = 0. Н о т а к к а к
/ X O R M < j X O R i, то / , = 1.
Так как L > / и L X O R i — / X O R Af, то L =
— / X O R Af X O R L Р а с с м о т р и м i X O R Af. В с и л у в ы ш е
с к а з а н н о г о д л я л ю б о г о б и т а с н о м е р о м R, R>t,
( « X O R M ) = 0, a ( i X O R A f ) , = l.
r
П р и этом / ; = 1 , с л е д о в а т е л ь н о
(iXOR/XORM) = / f r для r>t
и
( f X O R / X O R M ) , = 0 для r=t 7
т. е. L < C / ? ! П о л у ч и л и противоречие.
163
8. В в е д е м п е р е м е н н у ю N = N. П у с т ь N и М з а д а н ы
X x
в д е с я т и ч н о й с и с т е м е с ч и с л е н и я . П е р е в е д е м д р о б ь М /М х
в с и с т е м у с ч и с л е н и я с о с н о в а н и е м р.
П у с т ь в с и с т е м е с о с н о в а н и е м р и с к о м а я д р о б ь О,
а а ....
х 2 Получаем:
а, • р ~ + 1
а • р~
2
2
+... = NJM.
У м н о ж и м п р а в у ю и л е в у ю ч а с т и р а в е н с т в а на р: а -\~ х
- f - а - p ~ + ... = N ~p/'М. В ы д е л я я ц е л у ю ч а с т ь в ы р а ж е н и й
2
l
x
с л е в а и с п р а в а от з н а к а р а в е н с т в а , п о л у ч а е м : а е с т ь х
ц е л а я ч а с т ь от (N -p/M). x О б о з н а ч и м N = N • р m o d М\ 2 x
ж а я на р и н а х о д я ц е л у ю ч а с т ь , о п я т ь ж е и м е е м : а е с т ь 2
В ходе в ы д е л е н и я ц и ф р а,- м ы м о ж е м п о л у ч и т ь р а з
л и ч н ы х з н а ч е н и й N не б о л е е ч е м М (по п р и в е д е н н о м у
t
а л г о р и т м у в ы ш е у н а с в с е г д а А / < Л/). ;
Е с л и в д р у г к а к и е - т о д в а о с т а т к а с о в п а д а ю т : /V, == /V •,
1ф\, то с о в п а д а ю т и ц и ф р ы р а з л о ж е н и я : a = a , i + x j + x
a = a 2> •••> т. е. ц и ф р ы (a ,
i + 2 J+ а/) о б р а з у ю т один из
i+x
164
Фрагмент программы:
р : = 0 ; q : . = l ; m i n : = r;
REPEAT
I F p / q < r T H E N p : = p + l E L S E q : = q + l;
d: -=abs(r — p/q);
IF d < m i n T H E N
BEGIN
m i n : = d;writeln(p : 7 / / ' , q )
END
UNTIL ( q > = q m a x ) O R ( d = G);
10. Т а к к а к q<Lp, то ц и ф р ы а и b д о л ж н ы л е ж а т ь
в п р е д е л а х от 0 до я — 1. Р а с п и ш е м А в с и с т е м е с о с н о в а
нием р:
= (ар + Ь)(р-2
+ р-* + ...) =
Получаем
(bq + а ) ( р -
2
1) = (а/> + b)(q 1
- 1),
a[p(q -l)-(p -l)}
2 2
= b[q(p -l)-(q -l)].
2 2
В ы ч и с л я е м в ы р а ж е н и я в к в а д р а т н ы х с к о б к а х , обо
з н а ч и в их с о о т в е т с т в е н н о и и v: au = bv.
Н а х о д и м Н О Д (и, v) = s; о б о з н а ч и м r — a/s, f=v/t>.
165
П о л у ч а е м ar — bf, г и / в з а и м н о п р о с т ы е ч и с л а ,
следовательно, решениями этого равенства будут числа
a = f, k b= r, k ft==l, 2,
п р и э т о м м ы б е р е м т о л ь к о т е а и Ь, д л я к о т о р ы х о д н о в р е
м е н н о в ы п о л н я е т с я афЬ, a<Cq, b<q. Д л я н а х о ж д е н и я
Н О Д и с п о л ь з у е т с я а л г о р и т м (3.8).
1 1 . Н е п о с р е д с т в е н н о е в ы ч и с л е н и е к о о р д и н а т концов
отрезков, принадлежащих множеству К , и определение, п
п р и н а д л е ж и т л и а/b о д н о м у и з э т и х о т р е з к о в , д а е т
неверный ответ д л я большинства входных данных. Это
с в я з а н о с т е м , ч т о д а ж е д л я не с л и ш к о м б о л ь ш и х и з - з а
ограниченного числа знаков в машинном представлении
ч и с е л с п л а в а ю щ е й т о ч к о й п р о и с х о д и т п о т е р я точности
при вычислении. П р и больших п вообще будет наблю
д а т ь с я п о т е р я з н а ч и м о с т и : ч и с л о п р и д е л е н и и на 3 с т а
нет т а к и м м а л ы м , что в м а ш и н е оно б у д е т п р е д с т а в л я т ь
ся нулем.
Р а с с м о т р и м д р у г о й м е т о д р е ш е н и я этой з а д а ч и . Т а к
к а к мы постоянно д о л ж н ы делить отрезки на три части,
то э т о н а т а л к и в а е т на м ы с л ь и с п о л ь з о в а т ь т р о и ч н у ю
систему счисления и троичные дроби.
В п е р в ы й из у д а л е н н ы х и н т е р в а л о в ( 1 / 3 , 2 / 3 ) п о
п а д а ю т т о л ь к о т е т о ч к и х = 0, а а а ...,
х 2 2 в троичном разло
ж е н и и к о т о р ы х а = \, к р о м е т о ч к и 1/3 = 0, 1000...—
{
п р а в о г о к о н ц а о т р е з к а [0, 1/3]. Т а к и м о б р а з о м , в / ( ,
о с т а ю т с я в с е т е т о ч к и , у к о т о р ы х а Ф\, х л и б о а , = 1,
а = а = ... = 0. А н а л о г и ч н о , в м н о ж е с т в е /С,-, г ' ^ 0 , с о д е р
2 3
ж а т с я т о ч к и , у к о т о р ы х ни о д н о из чисел а,-, 1 ^ / ^ г , не
р а в н о 1, а т а к ж е т о ч к и , у д о в л е т в о р я ю щ и е у с л о в и ю : а , =
= 1, / — ф и к с и р о в а н о , 1 ^ / ^ г , а Ф\, 1 / < / , и а, = 0 д л я
л ю б о г о / > / (т. е. в з а п и с и т р о и ч н о й д р о б и т о л ь к о о д н а
п о з и ц и я р а в н а 1, п о с л е н е е в с е о с т а л ь н ы е п о з и ц и и
нулевые. Эти дроби соответствуют п р а в ы м концам отрез
к о в из м н о ж е с т в а /С,-).
З а п и с ь алгоритма на языке П а с к а л я имеет вид:
166
x : = a ; i : = l;
w h i l e ( i < = n ) a n d ( x < > 1) a n d ( a < C > 0 ) do
begin
a : = a*3 mod b;
x:=a*3divb;
end;
i f ( x = 1) a n d ( a < > 0 ) a n d ( n < > 0 )
then writeln ('He принадлежит')
else writeln ('Принадлежит');
факт.
П у с т ь 2 —l = q. Д е л и т е л я м и ч и с л а К, в к л ю ч а я с а м о
Р
ч и с л о К, я в л я ю т с я с л е д у ю щ и е ч и с л а :
1,2,2 ,...,2"-\ 2
q,2q,2 q,...,2»- q.
2 l
которая равна
( 1 + 2 + ... + 2 " - ) ( + 1 ) = ( 1 + 2 + ... + 2 " - ) . 2 ' ' .
1
0
1
Т а к и м о б р а з о м , с у м м а всех д е л и т е л е й ч и с л а К е с т ь
2 -q = 2-2"~ q,
p l
а с у м м а всех д е л и т е л е й , к р о м е с а м о г о
ч и с л а K = 2 ~ q, p {
равна
2-2"- q-2 - q
l p l
= 2 - q = K. p l
Ч и с л о Р р а в н о с у м м е всех своих д е л и т е л е й , з а и с к л ю
ч е н и е м е г о с а м о г о , с л е д о в а т е л ь н о , оно я в л я е т с я с о в е р
шенным.
167
Е с л и п о л у ч и л и н е с о в е р ш е н н о е ч и с л о , у м е н ь ш а е м р на
1 и снова проверяем, является ли число совершенным.
С о в е р ш е н н ы е ч и с л а п о л у ч а ю т с я д л я з н а ч е н и й р, р а в
ных, н а п р и м е р , 2, 3, 5, 7, 13, 17, 19, 3 1 , 6 1 , 89, 107, 127.
13. З а п и ш е м у р а в н е н и е в в и д е
sX A
e k + pY^nY Am t + rX.
П р и р а в н и в а я к о э ф ф и ц и е н т ы при X, А и У, п о л у ч а е м :
X\se = k
A\sk = nt (*)
Y\p — nm
Так как коэффициенты в формуле должны быть
в з а и м н о п р о с т ы м и , то с л е д у е т н а й т и Н О Д чисел
к и t ( а л г о р и т м 3.8). П у с т ь (к, t) = d. Т о г д а s(k/d) =
= п (t/d), и ч и с л а k/d и t/d я в л я ю т с я в з а и м н о п р о с т ы м и ,
с л е д о в а т е л ь н о , n = k/d, a s = t/d.
И с п о л ь з у я ф о р м у л ы (*), н а х о д и м о с т а л ь н ы е к о э ф ф и
циенты.
14. П о з а д а н н ы м к о о р д и н а т а м т р е х в е р ш и н мы мо
ж е м н а й т и п л о щ а д ь т р е у г о л ь н и к а ABC:
Sabc = (bx — ay)/2.
Е с л и а — 0, то м и н и м а л ь н а я п л о щ а д ь S = b/2, е с л и
mill
b = 0, то S min = a / 2 . Е с л и ж е обе к о о р д и н а т ы о т л и ч н ы
от н у л я , то из а л г о р и т м а Е в к л и д а д л я н а х о ж д е н и я
Н О Д (а, Ь) с л е д у е т с у щ е с т в о в а н и е т а к и х ц е л ы х х и у, что
I Ьх — иу \ = П О Д (а, Ь), и и м е н н о эти х и у м и н и м и з и р у
ют п л о щ а д ь т р е у г о л ь н и к а ABC.
Н а х о ж д е н и е Н О Д — а л г о р и т м 3.8.
15. О б о з н а ч и м 5 = Н О Д ( V , , V„). Д о к а ж и т е , что
е с л и V д е л и т с я н а ц е л о на S, то в сосуд с п о м о щ ь ю банок,
м о ж н о н а л и т ь V л и т р о в в о д ы , и н а ч е — нет.
16. З а в е д е м д в а м а с с и в а : t [0..N -|- 1 ] и S [О../V-f-11.
Элементы массивов — байты. В Е будем хранить теку
щую частичную сумму
е „ = 1 + 1 / 1 ! + 1 / 2 ! + ... + 1 / ( й - 1 ) ! , (*)
168
вычисленную с точностью'"JV+i знаков после запятой
(в я ч е й к е E[i] х р а н и т с я з н а ч е н и е г'-го р а з р я д а п о с л е
з а п я т о й , т. е. к о э ф ф и ц и е н т при 10 "'). В м а с с и в е S б у д е т
х р а н и т ь с я п о с л е д н е е с л а г а е м о е ч а с т и ч н о й с у м м ы , т. е.
1 l(k—1)! ( о п я т ь ж е в S[i] н а х о д и т с я i-я ц и ф р а п о с л е
з а п я т о й , все н е з н а ч а щ и е ц и ф р ы , р а з у м е е т с я , н у л и ) .
О ц е н и м п о г р е ш н о с т ь ф о р м у л ы (*) с учетом р а в е н с т в а
е _ 1 + 1 / 1 ! + 1/2! + . . . + + .
_ 1 1 _ 1 п+ 2
_
(л+1)! ' l _ ( n + 2)-' ~ (П+\)\ ' П+\-
1000 з н а к о в п о с л е з а п я т о й д о с т а т о ч н о С = 150 и т е р а ц и й .
Б у д е м д е л и т ь ч и с л о , п р е д с т а в л е н н о е м а с с и в о м S, на
о ч е р е д н о е ч и с л о k. Р е з у л ь т а т \/k\ прибавим к масси
ву Е. С л о ж е н и е р е а л и з у е т с я т а к :
perenos: = 0 ; {перенос из п р е д ы д у щ е г о р а з р я д а )
for i : = N + 1 d o w n to 0 do
begin
H Ii]: = E [ i ] + S [ i ] + p e r n i o s ;
p e r e n o s : — E [i] div 10; { ф о р м и р у е м новый п е р е н о с )
E [ i ] : = E [ i ] mod 10; { к о р р е к т и р у е м E [i]}
end;
В ы ч и с л е н и е новых с л а г а е м ы х и с у м м и р о в а н и е п р о в о
дится С раз.
Р а с с м о т р и м п р о ц е д у р у д е л е н и я S на К. Д е л и т ь б у д е м
т а к , к а к это о б ы ч н о д е л а е т с я в р у ч н у ю — « с т о л б и к о м » :
169
m : = m * 10 -f- a [i]; {дописываем к делимому сзади}
{одну ц и ф р у }
a[i]:=m div к {находим о ч е р е д н у ю ц и ф р у ч а
стного}
m : = = m m o d к; {и о ч е р е д н о е д е л и м о е }
end;
О б ъ я с н и т е , почему a [i] л е ж и т в п р е д е л а х от 0 до 9.
П о п ы т а е м с я в ы ч и с л и т ь е , и с п о л ь з у я схему Г о р н е р а :
п
•.-(•••((±+')-^+')-^+-К+'-
С н а ч а л а п о л а г а е м Е [ 0 ] = 1; з а т е м д е л и м « с т о л б и к о м »
ч и с л о , п р е д с т а в л я е м о е Е, на 450 и з а п о м и н а е м ц и ф р ы
ч а с т н о г о с н о в а в Е. З а т е м в ы п о л н я е м Е [ 0 ] : = Е[0]-j- 1,
д е л и м Е на 449 и т. д.
О б р а т и т е в н и м а н и е на то, что во в т о р о м с п о с о б е п р и
и с п о л ь з о в а н и и с х е м ы Г о р н е р а не н а д о п р о и з в о д и т ь с у м
м и р о в а н и е м а с с и в о в Е и S, п о э т о м у с к о р о с т ь р а б о т ы
увеличивается в 2 раза.
17. В п е р е м е н н о й с т а н д а р т н о г о т и п а т а к о е б о л ь ш о е
ч и с л о не п о м е с т и т с я . Б у д е м м о д е л и р о в а т ь в о з в е д е н и е
2 в с т е п е н ь п, в ы ч и с л я я п о с л е д о в а т е л ь н о 2 , 2 ,
1 2
2".
Ц и ф р ы п о л у ч е н н ы х на к а ж д о м ш а г е с т е п е н е й д в о й к и
будем хранить в массиве. В каждой ячейке массива
б у д е м х р а н и т ь по ( н а п р и м е р ) 4 д е с я т и ч н ы х ц и ф р ы ч и с л а
(т. е. в э л е м е н т е Л [1] — 4 п о с л е д н и х ц и ф р ы ч и с л а ( р а з
р я д ы 0 — 3 ) , в Л [2] — 4 п р е д п о с л е д н и х ( р а з р я д ы 4 — 7 )
и т . д.).
О ц е н и м к о л и ч е с т в о д е с я т и ч н ы х ц и ф р в ч и с л е 2",
и < 1 0 0 0 . Это 10 0 0 0 . 1 o g 1 0 + К 1 5 000 ц и ф р . - К о л и ч е с т в о
2
э л е м е н т о в м а с с и в а в о з ь м е м р а в н ы м 15 0 0 0 / 4 = 3750. В в е
д е м п е р е м е н н у ю Nach, в к о т о р о й б у д е м х р а н и т ь и н д е к с
элемента массива Л, в котором находятся старшие зна
чащие р а з р я д ы вычисляемого сейчас числа. П р и умно
ж е н и и на 2 т е к у щ е г о ч и с л а б у д е м у м н о ж а т ь на 2 к а ж
дый элемент массива, начиная с первого и з а к а н ч и в а я
э л е м е н т о м с н о м е р о м Nach. Е с л и к а к о й - т о из э л е м е н т о в
м а с с и в а б о л ь ш е 9999, то п р о и з в о д и м п е р е н о с е д и н и ц ы
170
в следующий р а з р я д . Если был перенос единицы в р а з
р я д Nach -f- 1, то з н а ч е н и е п е р е м е н н о й Nach увеличим
на 1.
18. М ы м о ж е м п р е д с т а в и т ь N1 в в и д е п р о и з в е д е н и я
простых сомножителей:
где А — п о к а з а т е л ь с т е п е н и , с которой п р о с т о е ч и с л о
р
р в х о д и т в р а з л о ж е н и е . В и д н о , что н у л е й в к о н ц е ч и с л а
столько ж е , сколько нулей в конце произведения 2'' -5 ', 2 Лг
но т а к к а к Л > Л , то к о л и ч е с т в о нулей р а в н о Л .
2 5 5
Д л я того чтобы н а й т и Л , н е о б х о д и м о в ы ч и с л и т ь
5
сумму
где [ ] — ц е л а я ч а с т ь ч и с л а .
К а ж д о е п я т о е ч и с л о в п р о и з в е д е н и и Л'! д е л и т с я на 5,
к а ж д о е д в а д ц а т ь п я т о е ч и с л о е щ е р а з д е л и т с я на 5,
к а ж д о е 5 ч и с л о е щ е р а з д е л и т с я на 5 и т. д. Т а к и м
3
о б р а з о м в (*) мы н а х о д и м , с к о л ь к о чисел в п р о и з в е д е н и и
N\ д е л и т с я на 5.
Фрагмент программы выглядит следующим образом:
к: = 5 ;
s: = 0 ;
repeat
s : = s - j - N div k;
к : = к * 5;
until (k>N);
19. Н а й д е м п р о с т ы е м н о ж и т е л и ч и с л а Р. П у с т ь это
будут р и р . Д л я каждого множителя p найдем число
к t
s, — с т е п е н ь , с к о т о р о й р, входит в р а з л о ж е н и е Р на
п р о с т ы е с о м н о ж и т е л и . К а к и в з а д а ч е 18, н а й д е м м а к с и -
171
м а л ы ш е числа т Т , т а к и е , что ЛП д е л и т с я на р,
и К
в степени Т но не д е л и т с я на P в степени
Ь M . T I+L
N\ = Pi'-p. -...-p -R i
2
k
i
М и н и м а л ь н о е из чисел m . d i v S j и д а с т и с к о м у ю сте
п е н ь М.
Рассмотрим пример: N = 1 5 , Р = 1 3 5 . Р = 3 - 3 - 3 - 5 =
= 3 - 5 , = 3,
3
P L = 3, /я, = 15 div 3 + 1 5 d i v ( 3 - 3 ) = 6; р = 5 ,
SL 2
s = l , m = 1 5 d i v 5 = 3.
2 2
из Р , и R б о л ь ш е 1 и м е н ь ш е или р а в н о 2:
2
# 1 = = ( / ? - - \ / / ? - 4 Р )/2, Р =
2
2 (р+Д/Р -4р)/2, 2
(R-4) 2
= R 2 - 8Р-1-16 < Р 2
- 4 Р < ( Р - 2) , 2
1< P , = ( P - V P 2
- 4 P ) / 2 < 2 .
172
И т а к , е с л и г < 4 , то р а з л о ж е н и е на м н о ж и т е л и з а к о н
чено, е с л и и н а ч е , то п р о в о д и м р а з л о ж е н и е г на д в а
м н о ж и т е л я , один из них м е н ь ш е л и б о р а в е н 2 (и тем
б о л е е м е н ь ш е 4), если д р у г о й м е н ь ш е 4, то п р о ц е с с не
з а к о н ч е н , если и н а ч е , то п о в т о р я е м ф а к т о р и з а ц и ю R до
тех п о р , п о к а не п о л у ч и м и с к о м о е р а з л о ж е н и е .
22. П у с т ь т/п — т е к у щ а я н е с о к р а т и м а я д р о б ь . П о к а
ж е м , к а к н а й т и с л е д у ю щ у ю по з н а ч е н и ю д р о б ь . П о н я т н о ,
что она б у д е т с р е д и н е с о к р а т и м ы х д р о б е й в и д а k/p, г д е
р м о ж е т п р и н и м а т ь з н а ч е н и я от 2 до 15. У ч и т ы в а я
у с л о в и е к/р>т/п можно для каждого р прямо вычис
лять минимальное значение к следующим образом:
k = m-p/n-\-\. П р и этом к а ж д а я д р о б ь k/p, п о л у ч е н н а я
описанным выше образом, несократима.
ш: = 0 ; п: = 1
repeat
i : = 1; j : = 1;
for p : = 2 to 15 do
begin
k : = m * p div n - f - 1 ;
if k * j •< p * i t h e n
begin
i:=k;
j : = p;
end;
end;
m : = i; n : = j ;
until i > = j
2 3 . Это у с л о в и е — р а в е н с т в о н у л ю с у м м ы всех чисел.
М ы всегда можем «перетащить» с помощью последова
т е л ь н о с т и ходов все н е н у л е в ы е ч и с л а , п о м е ч а ю щ и е в е р
ш и н ы , в о д н у к а к у ю - л и б о в е р ш и н у . Е с л и с у м м а всех
чисел р а в н а 0, то п о с л е э т и х х о д о в о к а ж е т с я , что во всех
в е р ш и н а х з а п и с а н 0.
24. П у с т ь и м е е т с я о п т и м а л ь н о е р а с п и с а н и е , в кото
ром номера выполняемых работ с о в п а д а ю т с порядковы-
173
ми н о м е р а м и р а б о т . Т о г д а э т о м у р а с п и с а н и ю б у д е т
соответствовать минимальное значение штрафа. Всякая
перестановка в порядке выполнения двух или более
р а б о т у ж е не м о ж е т п р и в е с т и к у м е н ь ш е н и ю ш т р а ф а ,
поэтому, переставив местами работы с номерами k и
м ы п о л у ч и м ш т р а ф не м е н ь ш е .
Обозначим через q время начала выполнения работы
t
L С учетом п р е д с т а в л е н и я ш т р а ф а это м о ж н о з а п и
сать так:
k— 1 га
Е CrQi + c -q k k + + I c
r<!i<
i=l i=k + 2
в е н н о ( & + 1 ) й и k-й р а б о т ы п о с л е п е р е с т а н о в к и . З а м е
т и м , что k-я р а б о т а в обоих р а с п и с а н и я х в ы п о л н и т с я
п о с л е того, к а к б у д у т в ы п о л н е н ы предшествующие
£1 работы, поэтому
Алгоритм:
1) д л я всех р а б о т в ы ч и с л и т ь о т н о ш е н и е г,/с ; ;
2) у п о р я д о ч и т ь р а б о т ы по в о з р а с т а н и ю „этого отно
шения.
25. В р а м к а х формулировки з а д а ч и под корректно
с т ь ю д а н н ы х п р о г р а м м ы п о н и м а е т с я то, что м а с с а к а ж
дого арбуза т д о л ж н а быть положительным числом. М ы
{
з н а е м /п, и т . П у с т ь д е й с т в и т е л ь н ы е м а с с ы а р б у з о в
п
арбуза.
174
П у с т ь m' — m — s, т\ = т
2 2 х и т / = б! + ( т , ' _ | + т / + 1 )/2,
тогда, т а к как
tn = d + (m _
i i l + m )/2, i+l то
—2-d r2-m
J
i — m_ i u m' = +l — 2-d + 2'tn' i — tn' _ i u и
mi — m ==( — 2-d + 2-m —m )
i
/
2
/
} — ( — 2-d + 2-m 2 — m ]==2s,
1
т' — m =(
4 4 — 2-d-\-2-т' 3 — т' ) — ( — 2 • я* -f- 2 • т
2 3 — т ] = 3s,
2
<-m„=(«--l)s.
§ 1. П О Н Я Т И Е З А Д А Ч И И ПОДЗАДАЧИ
ча о п р е д е л я е т с я т р е м я п а р а м е т р а м и — к о э ф ф и ц и е н т а м и
a, b и с.
Е с л и ж е мы хотим р е ш и т ь з а д а ч у нахождения
с р е д н е г о а р и ф м е т и ч е с к о г о н е к о т о р о г о н а б о р а чисел, то
п а р а м е т р а м и з а д а ч и б у д у т к о л и ч е с т в о чисел и их з н а
чения.
П р и э т о м н а с пока не и н т е р е с у е т к о н к р е т н ы й а л г о
р и т м р е ш е н и я з а д а ч и . М ы хотим н а у ч и т ь с я р е ш а т ь з а д а
чу, с в о д я ее к р е ш е н и ю п о д з а д а ч . З д е с ь у д о б н о д у м а т ь
об а л г о р и т м е к а к о н е к о т о р о м у с т р о й с т в е или некоторой
ф у н к ц и и , к о т о р ы е п р е о б р а з у ю т в х о д н ы е п а р а м е т р ы в не
которые выходные данные, являющиеся решением за
дачи.
Поэтому при описанном в ы ш е подходе л ю б а я з а д а ч а
может быть формализована в виде некоторай функции,
а р г у м е н т а м и которой могут я в л я т ь с я т а к и е в е л и ч и
ны, к а к :
количество параметров;
значения параметров.
Здесь и далее в качестве параметров будут рассмат
риваться целые неотрицательные числа.
К а к п р а в и л о , о д н и м из а р г у м е н т о в з а д а ч и я в л я е т с я
к о л и ч е с т в о п а р а м е т р о в з а д а ч и . В том с л у ч а е , к о г д а по
176
з н а ч е н и ю этого п а р а м е т р а м о ж н о о п р е д е л и т ь к о н к р е т
ные з н а ч е н и я д р у г и х п а р а м е т р о в , мы эти п а р а м е т р ы
будем опускать. Это обычно д е л а е т с я в случае, когда
п а р а м е т р ы з а д а н ы т а б л и ц е й . Н а п р и м е р , е с л и н а м не
о б х о д и м о н а й т и с у м м у п е р в ы х К э л е м е н т о в т а б л и ц ы , то
д л я р е ш е н и я з а д а ч и д о с т а т о ч н о з н а т ь один п а р а м е т р
К, а все о с т а л ь н ы е п а р а м е т р ы м о ж н о в ы б р а т ь из т а б
лицы.
П о с л е того к а к з а д а ч а ф о р м а л и з о в а н а ( п р е д с т а в л е
на) в виде функции с некоторыми аргументами, опреде
л и м п о н я т и е подзадачи. З д е с ь и д а л е е в этой г л а в е п о д
п о д з а д а ч е й б у д е м п о н и м а т ь ту ж е з а д а ч у , но с м е н ь ш и м
ч и с л о м п а р а м е т р о в или з а д а ч у с тем ж е числом п а р а
м е т р о в , но при этом хотя бы один из п а р а м е т р о в и м е е т
меньшее значение.
П р и м е р . Н а й т и с а м у ю т я ж е л у ю из 10 монет.
Д л я формализации задачи определим функцию «Са
м а я т я ж е л а я монета», а р г у м е н т а м и которой я в л я ю т с я
к о л и ч е с т в о монет (10) и м а с с а к а ж д о й из монет. П о к а
н а с не и н т е р е с у е т к о н к р е т н ы й в и д этой ф у н к ц и и , д л я н а с
в а ж н е й ш и м ф а к т о р о м я в л я е т с я то, что она д а е т п р а
вильное решение.
Д л я данной задачи можно рассмотреть 9 подзадач,
которые имеют меньшее число аргументов:
« с а м а я т я ж е л а я м о н е т а » из 1 м о н е т ы ,
« с а м а я т я ж е л а я м о н е т а » из 2 п е р в ы х монет,
« с а м а я т я ж е л а я м о н е т а » из 3 п е р в ы х монет,
« с а м а я т я ж е л а я м о н е т а » из 9 п е р в ы х монет.
Таким образом, у нашей функции «Самая т я ж е л а я
монета» аргументом является количество имеющихся
монет, по к о т о р о м у м о ж н о о п р е д е л и т ь м а с с у к а ж д о й
м о н е т ы . С л е д о в а т е л ь н о , р а с с м о т р е н н ы е п о д з а д а ч и име
ют м е н ь ш е е к о л и ч е с т в о а р г у м е н т о в , чем и с х о д н а я з а
дача.
Н а д о о т м е т и т ь , что под п о д з а д а ч е й не с л е д у е т пони-
177
мать некоторые этапы решения задачи, такие, как орга
н и з а ц и я в в о д а и в ы в о д а д а н н ы х , их у п о р я д о ч е н и е или
решение некоторой части поставленной з а д а ч и .
§ 2. С В Е Д Е Н И Е З А Д А Ч И К ПОДЗАДАЧАМ
О д н и м из о с н о в н ы х с п о с о б о в р е ш е н и я з а д а ч я в л я е т с я
их с в е д е н и е к р е ш е н и ю т а к о г о н а б о р а п о д з а д а ч , ч т о б ы ,
исходя и з р е ш е н и й п о д з а д а ч , б ы л о в о з м о ж н о п о л у ч и т ь
р е ш е н и е исходной з а д а ч и .
П р и э т о м д л я р е ш е н и я исходной з а д а ч и м о ж е т п о т р е
б о в а т ь с я р е ш е н и е одной или н е с к о л ь к и х п о д з а д а ч .
Пример. Задачу, сформулированную в примере
в предыдущем п а р а г р а ф е , можно свести к различным
наборам подзадач, например:
н а й т и с а м у ю т я ж е л у ю из 9 монет, а з а т е м найти
с а м у ю т я ж е л у ю из 2 м о н е т ( н а й д е н н о й из 9 и о с т а в ш е й
с я ) или
н а й т и с а м у ю т я ж е л у ю из 5 монет, з а т е м с а м у ю
т я ж е л у ю из д р у г и х 5 монет, а з а т е м с а м у ю т я ж е л у ю из
2 монет, н а й д е н н ы х на п р е д ы д у щ и х ш а г а х .
В о з м о ж н ы и д р у г и е н а б о р ы , но нетрудно,, з а м е т и т ь ,
что все они о с н о в ы в а ю т с я на одной п о д з а д а ч е : н а й т и
с а м у ю т я ж е л у ю из 2 монет.
В приведенном примере исходная з а д а ч а сводится
к п о д з а д а ч а м с меньшим числом параметров, в данном
с л у ч а е — с м е н ь ш и м к о л и ч е с т в о м монет.
Используя этот ж е принцип, можно решить задачу
нахождения Н О Д двух чисел, которая р а с с м а т р и в а л а с ь
в п. 3 г л . 3.
178
Пример. Н а й т и Н О Д двух н а т у р а л ь н ы х чисел
N и М.
Е с л и ч и с л а р а в н ы , то их Н О Д р а в е н о д н о м у из ч и с е л ,
т. е. Н О Д ( Л Г , M) — N.
Р а с с м о т р и м с л у ч а й , к о г д а ч и с л а не р а в н ы . И з в е
с т н о , что
Н О Д ( N , А?) = Н О Д ( Л Г , M + N) = HOR(N + M, М).
К р о м е того, при N>M Н О Д ( М , Л4) = Н О Д ( Л / - М , Af),
а п р и M>N HOJX(N, M)=HOR{N, M-N).
Последние соотношения и обеспечивают основной
принцип сведения решения задачи к подзадачам: значе
ние одного из п а р а м е т р о в с т а л о м е н ь ш е , хотя их к о л и
чество и осталось прежним.
Таким образом, решение задачи нахождения
Н О Д (N, М) п р и р а з л и ч н ы х з н а ч е н и я х N и Af с в о д и т с я
к двум подзадачам:
HOR(N — M, Af), е с л и N>M;
Н О Д (N, M-N), е с л и Af > N.
Н а й д е н н ы й с п о с о б с в е д е н и я р е ш е н и я исходной з а д а
чи к р е ш е н и ю н е к о т о р ы х п о д з а д а ч м о ж е т б ы т ь з а п и с а н
в в и д е с о о т н о ш е н и й , в к о т о р ы х з н а ч е н и е ф у н к ц и и , со
о т в е т с т в у ю щ е й исходной з а д а ч е , в ы р а ж а е т с я ч е р е з з н а
чения функций, соответствующих п о д з а д а ч а м . П р и этом
в а ж н е й ш и м у с л о в и е м с в е д е н и я я в л я е т с я тот ф а к т , что
з н а ч е н и я а р г у м е н т о в у л ю б о й из ф у н к ц и й в п р а в о й ч а с т и
соотношения меньше значения аргументов функции в ле
вой ч а с т и с о о т н о ш е н и я . Е с л и а р г у м е н т о в н е с к о л ь к о , то
д о с т а т о ч н о у м е н ь ш е н и я о д н о г о из них.
С л е д у е т о б р а т и т ь в н и м а н и е на то, что с о о т н о ш е н и я
179
д о л ж н ы б ы т ь о п р е д е л е н ы д л я всех д о п у с т и м ы х з н а ч е н и й
аргументов.
П р и м е р . Н а й т и с у м м у N э л е м е н т о в т а б л и ц ы А.
П у с т ь ф у н к ц и я S (JV) с о о т в е т с т в у е т р е ш е н и ю исход
ной з а д а ч и . Э т а ф у н к ц и я и м е е т один а р г у м е н т N —
к о л и ч е с т в о с у м м и р у е м ы х э л е м е н т о в т а б л и ц ы А. П о н я т
но, что д л я п о и с к а с у м м ы N э л е м е н т о в д о с т а т о ч н о з н а т ь
с у м м у п е р в ы х N— 1 э л е м е н т о в и з н а ч е н и е JV-ro э л е м е н т а .
П о э т о м у р е ш е н и е исходной з а д а ч и м о ж н о з а п и с а т ь в ви
де соотношения
S(N) = S(N-l) + a.
N
С л е д у е т о т м е т и т ь , что это с о о т н о ш е н и е с п р а в е д л и в о
д л я л ю б о г о к о л и ч е с т в а э л е м е н т о в N> I. Е г о м о ж н о
переписать в виде
О д н а к о п о к а это с о о т н о ш е н и е не о п р е д е л е н о п р и
N=1. К приведенному в ы ш е соотношению необходимо
д о б а в и т ь с о о т н о ш е н и е S(l) = a . l
З а м е т и м , что на п р а к т и к е п р и м е н я ю т с я и м е ю щ и е тот
ж е смысл соотношения
S ( / ) = S ( j - l ) + a, п р и S ( 0 ) = 0.
S[0]:=0
н ц д л я i от 1 до N (4.1)
| S[i]:=S[i-l]+a[i]
кц
В S[i] х р а н и т с я з н а ч е н и е ф у н к ц и и S ( / ) .
Здесь и д а л е е в круглых скобках будут записываться
аргументы функции, а в квадратных — индексы элемен
тов м а с с и в а . П р и этом и м я ф у н к ц и и и и м я м а с с и в а ,
180
в к о т о р о м х р а н и т с я з н а ч е н и е этой ф у н к ц и и , могут с о в п а
дать.
П р и м е р . В ы ч и с л и т ь сумму S = 1 + 1 /х + 1 / х -{ . . . |- 2
-\-l/x
N
п р и х, не р а в н о м 0.
Как и в предыдущем примере, можно записать следу
ющее соотношение:
S ( 0 = S ( i — l ) + a(i), i>h
где а ( / ) = 1 / х ' , S(0)=1.
К о н е ч н о , м о ж н о и эти с о о т н о ш е н и я и с п о л ь з о в а т ь д л я
написания программы. При этом у нас возникла новая
з а д а ч а — н а й т и способ в ы ч и с л е н и я а (г), д л я чего м о ж
но в о с п о л ь з о в а т ь с я тем ж е п р и е м о м — п о п ы т а т ь с я в ы
ч и с л и т ь а (г) ч е р е з з н а ч е н и е а (г — 1). С о о т н о ш е н и е м е ж д у
з н а ч е н и я м и a(i) и с (г — 1) имеет вид
a (i) — a (i— 1)/х, а(0)=1.
S[0]: = 1
а[0]: = 1
н ц д л я i от 1 до N (4.2)
a [ i ] : = а [i — 1]/х
S[i]:=S[i-l]+a[i]
кц
П р и м е ч а н и е . Отметим, что и в этом случае индексы при
Sua можно опустить в связи с тем, что для вычисления текущего
элемента каждой из таблиц достаточно знать только значение предыду
щего элемента.
С о о т н о ш е н и я , с в я з ы в а ю щ и е одни и те ж е ф у н к ц и и , но
с различными аргументами, называются рекуррентными
соотношениями или рекуррентными уравнениями.
181
Вопросы для повторения
§ 4. П Р А В И Л Ь Н Ы Е РЕКУРРЕНТНЫЕ
СООТНОШЕНИЯ
182
б ы л о б ы н е п р а в и л ь н ы м , т а к к а к оно не о п р е д е л е н о
п р и i= 1.
К о н е ч н о , могут б ы т ь и б о л е е с л о ж н ы е с о о т н о ш е н и я ,
с в я з ы в а ю щ и е более двух функций.
П р и м е р . О д н о й из н а и б о л е е и з в е с т н ы х ч и с л о в ы х
последовательностей я в л я ю т с я числа Фибоначчи, кото
рые определяются следующим рекуррентным соотноше
нием:
F(0)=1,
F(l)=l t
В э т о м с л у ч а е д л я в ы ч и с л е н и я з н а ч е н и я F (N), к о т о
р о е х р а н и т с я в F [N], м о ж н о в о с п о л ь з о в а т ь с я с л е д у ю щ и м
алгоритмом:
F [()]: = }
F[l]: = l
нц для i от 2 до N (4.3)
J F[i]: =F[i-l] + F[i-2]
кц
183
В О П Р О С Ы Д Л Я ПОВТОРЕНИЯ
ЯВЛЯЮТСЯ ЛИ ПРАВИЛЬНЫМИ С Л Е Д У Ю Щ И Е Р Е К У Р Р Е Н Т Н Ы Е У Р А В
НЕНИЯ:
А) S (i) — S (i—1) + а , / 2 , i — НАТУРАЛЬНОЕ;
Б ) S ( T ) = S ( I — L ) F ( S (/—!))'' ДЛЯ />2,
S(L)=L;
В) P(i) = P(i— ДЛЯ I > 2 ,
P(L)=L;
Г) S ( I ) = S (T DIV 2)-AI ДЛЯ
S(0)=1;
Д ) S(i) = S(i—l) + S(i — 2)/i ДЛЯ Г> 2 ,
S ( Q ) = 0, S(L)=L;
Е ) S(i) = S(i—l) i
+ (—l) x /ii
ДЛЯ / " > 1,
S(0)=1;
Ж) Z (/) = F {(£ DIV 2 ) 4 1 ) [ 1 ДЛЯ Г > 2 ,
7
F ( 1 ) = 0?
184
5.1. Организация одномерных таблиц
О д н и м из с п о с о б о в о р г а н и з а ц и и т а б л и ц я в л я е т с я
такой, когда размерность т а б л и ц ы определяется количе
ством аргументов у функции, соответствующей подза
даче.
П р и м е р . Рассмотрим задачу нахождения произве
д е н и я 10 э л е м е н т о в т а б л и ц ы А.
П у с т ь ф у н к ц и я Р (10) с о о т в е т с т в у е т р е ш е н и ю н а ш е й
исходной з а д а ч и . В д а н н о м с л у ч а е у ф у н к ц и и т о л ь к о
один п а р а м е т р — к о л и ч е с т в о э л е м е н т о в . Д л я п о и с к а п р о
и з в е д е н и я 10 э л е м е н т о в д о с т а т о ч н о з н а т ь п р о и з в е д е н и е
п е р в ы х 9 э л е м е н т о в и з н а ч е н и е 10-го э л е м е н т а . П о э т о м у
р е ш е н и е исходной з а д а ч и м о ж н о з а п и с а т ь в в и д е соотно
ш е н и я Р ( 1 0 ) = Р ( 9 ) - а , . С л е д о в а т е л ь н о , это с о о т н о ш е н и е
п
м о ж е т б ы т ь о п р е д е л е н о д л я л ю б о г о г, 2 < л < [ 1 0 :
185
Таким образом, размерность таблицы, достаточная
д л я р е а л и з а ц и и рекуррентных соотношений, определя
ется количеством аргументов у функций, соответствую
щ и х п о д з а д а ч а м . К о л и ч е с т в о ж е э л е м е н т о в по к а ж д о й
размерности (количество элементов в строках, столбцах)
о п р е д е л я е т с я к о л и ч е с т в о м в о з м о ж н ы х з н а ч е н и й соответ
ствующего аргумента.
5.2. О р г а н и з а ц и я д в у м е р н ы х таблиц
Е щ е р а з о б р а т и м в н и м а н и е на то, что н а с п о к а не
о ч е н ь и н т е р е с у е т р е а л и з а ц и я а л г о р и т м а , п р и которой
м и н и м и з и р у е т с я т а к а я х а р а к т е р и с т и к а , к а к р а з м е р ис
п о л ь з у е м о й о п е р а т и в н о й п а м я т и . Б у д е м с ч и т а т ь , что
п а м я т и к о м п ь ю т е р а д о с т а т о ч н о д л я х р а н е н и я соответ
ствующей таблицы.
П р и м е р . Д л я данной прямоугольной таблицы А
р а з м е р а 5 X 6 построить прямоугольную таблицу В
того ж е р а з м е р а , э л е м е н т ы к о т о р о й о б л а д а ю т с л е д у ю
щ и м с в о й с т в о м : э л е м е н т В [i, / ] р а в е н м а к с и м а л ь н о м у из
э л е м е н т о в т а б л и ц ы В, к о т о р ы е р а с п о л о ж е н ы л е в е е и в ы
ш е п о з и ц и и (/, / ) , в к л ю ч а я т а к ж е п о з и ц и ю (/, / ) . П р и
э т о м с ч и т а е т с я , что п о з и ц и я ( 1 , 1) — в е р х н я я л е в а я пози
ция прямоугольной таблицы, интересующая нас часть
т а б л и ц ы в ы д е л е н а п р и i = 3 и / = 4.
П у с т ь T(i, / ) о б о з н а ч а е т ф у н к ц и ю , в ы ч и с л я ю щ у ю
э л е м е н т В [i, /].
О п р е д е л и м с н а ч а л а з н а ч е н и я э л е м е н т о в т а б л и ц ы В,
расположенных в первой строке и в первом столбце.
Получим:
Т(1, 1 ) = Л [ 1 , 1],
186
• 7 ( 1 , / ) = т а х { 7 ' ( 1 , / - 1 ) , A[l, /]} п р и у > 2 ,
T(i, 1) = т а х { Г ( « — 1 , 1), A[i, 1]} при г > 2 .
Эти с о о т н о ш е н и я с л е д у ю т из того, что в этих с л у ч а я х
интересующая нас область матрицы А ограничена толь
ко э л е м е н т а м и первой строки или первого столбца мат
рицы.
П р и 2 < ! г s g ; 5 и 2 < ! / ^ 6 д л я этой функции можно
записать следующее рекуррентное соотношение:
T(i, у) = m a x {Г ( г - 1 , / ) , T(i, / - 1 ) , A [i, /]}.
Д е й с т в и т е л ь н о , в е л и ч и н а Т (i—1, у) с о о т в е т с т в у е т
м а к с и м а л ь н о й в е л и ч и н е э л е м е н т о в т а б л и ц ы А в той
ее части, которая определяется значением индексов
i— 1 и у, а в е л и ч и н а T(i, у — 1) — м а к с и м а л ь н о й в е л и ч и
не э л е м е н т о в т а б л и ц ы А, определяемой индексами
i и у — 1. П о э т о м у э т и в е л и ч и н ы у ч и т ы в а ю т з н а ч е н и я всех
э л е м е н т о в м а т р и ц ы А в той ее ч а с т и , к о т о р а я о п р е д е л я
ется значениями индексов i и у за исключением одного
э л е м е н т а А [г, у].
Д л я р е а л и з а ц и и этих рекуррентных соотношений до
статочно двумерной (прямоугольной) таблицы, так как
у ф у н к ц и и Т д в а а р г у м е н т а . В а ж н о о т м е т и т ь , что п р и
э т о м м ы м о ж е м о т о ж д е с т в и т ь в е л и ч и н ы Т (г, / ) и В [г, у].
Тогда фрагмент алгоритма можно записать следующим
образом:
В [ 1 , 1 ] : = А [ 1 , 1]
н ц д л я j от 2 до б
| B [ l , j] = m a x ( B [ l , j - 1 ] , A [ l , j])
кц
н ц д л я i от 2 до 5
| B [ i , l ] = m a x ( B [ i - l , 1], A [ i , 1]) (4.6)
кц
н ц д л я i от 2 до 5
н ц д л я j от 2 до 6
B [ i , j ] = m a x ( B [ i , j - 1 ] , В П - 1 , j])
B [ i , j] = m a x ( B [ i , j], A [ i , j])
кц
кц
187
Вопросы д л я пезуорания
1. Определить р а з м е р ы одномерных таблиц для следующих
рекуррентных уравнений, где i — натуральное:
а) S(i) = S(i—l) + S{i—l) для 2 < < < К),
S(l)=l;
б) P(i) = P(i—l)-i для 2 < i < 2 0 ,
Р(1)=1;
в) S ( i ) = P ( « d i v 2 ) + l для 1 < г < 3 0 ,
S(0)=1;
г) S ( 0 = S ( t — д л я l<i<100,
S ( 0 ) = 0;
д) S(») = S ( t — 1 ) + ( — l)'V/t д л я 1</<1000,
S(0)=1.
2. Определить р а з м е р ы двумерных таблиц для следующих
рекуррентных уравнений:
а) S(i, / ) = min {S (г— 1, / ) , S (i, / — 1 ) , a ) для 2 ^ ( < 5,
tj
2</<6,
S ( l , /) = а , S(*, !) = a ;
1у a
2</<13,
S ( l , /') = a S (г, 1) = а,,;
i / t
2</<6,
S ( l , /) = а , S ( i , l ) = a ;
1у n
l</<9,
S ( 0 , / ) = (), S(i, 0 ) = 0, S ( 0 , 0) = ().
§ 6. С П О С О Б В Ы Ч И С Л Е Н И Я
ЭЛЕМЕНТОВ ТАБЛИЦЫ
П о с л е того к а к н а й д е н о с в е д е н и е з а д а ч и к п о д з а д а
чам и определены рекуррентные соотношения, соответст
вующие этому сведению, необходимо определить наибо
л е е р а ц и о н а л ь н ы й способ в ы ч и с л е н и я э л е м е н т о в т а б
лицы.
Д л я о д н о м е р н о й т а б л и ц ы т а к и м способом о б ы ч н о
является последовательное вычисление элементов, на
чиная с первого.
188
П р и м е р . О п р е д е л и т ь , с к о л ь к и м и р а з л и ч н ы м и спо
с о б а м и м о ж н о п о д н я т ь с я на 10-ю с т у п е н ь к у л е с т н и ц ы ,
е с л и з а один ш а г м о ж н о п о д н и м а т ь с я на с л е д у ю щ у ю
с т у п е н ь к у и л и ч е р е з одну.
П у с т ь /С (10) — з а д а ч а п о и с к а к о л и ч е с т в а с п о с о б о в
п о д ъ е м а на 10-ю с т у п е н ь к у . О п р е д е л и м z'-ю п о д з а д а ч у
нашей задачи к а к задачу поиска количества способов
п о д ъ е м а на г'-ю с т у п е н ь к у .
И с х о д я из у с л о в и я з а д а ч и , на 10-ю с т у п е н ь к у м о ж
но п о д н я т ь с я н е п о с р е д с т в е н н о с 8-й и 9-й. П о э т о м у ,
если мы знаем количество способов подъема К (8) и
К ( 9 ) на 8-ю и 9-ю с т у п е н ь к и , то к о л и ч е с т в о с п о с о б о в
п о д ъ е м а на 10-ю м о ж е т б ы т ь о п р е д е л е н о к а к /С (10) =
= Л'(8) + Л'(9).
Т а к о е с о о т н о ш е н и е п о л у ч а е т с я потому, что л ю б о й
с п о с о б п о д ъ е м а на 8-ю с т у п е н ь к у п р е в р а щ а е т с я в с п о с о б
п о д ъ е м а на 10-ю д о б а в л е н и е м п е р е ш а г и в а н и я ч е р е з 9-ю,
а л ю б о й способ п о д ъ е м а на 9-ю с т у п е н ь к у п р е в р а щ а е т с я
в с п о с о б п о д ъ е м а на 10-ю д о б а в л е н и е м п о д ъ е м а с 9-й на
10-ю. В с е эти с п о с о б ы р а з л и ч н ы .
Аналогичное соотношение справедливо для любой
с т у п е н ь к и i, н а ч и н а я с т р е т ь е й :
К[1]: = 1
К[2]:=2
н ц д л я i от 3 до 10 (4.7)
| K[i]:=K[i-l] + K[i-2]
кц
189
П р и м е ч а н и е. Полученные рекуррентные соотношения не отли
чаются от рекуррентных соотношений примера 6, поэтому могут быть
реализованы без использования таблицы.
6.2. В ы ч и с л е н и е э л е м е н т о в д в у м е р н о й таблицы
1 1 1 1 1 1 1
2 0 1 2 2 0 1
1 1 2 3 1 1
со
4 1 2 0 1 v
2 2
5 1 0 1 1 0 1
190
р а с п о л о ж е н н ы х в первой с т р о к е и в п е р в о м с т о л б ц е .
Получим:
/ 3 ( 1 , 1) = Л [ 1 , 1],
13(1, ]) = Л [ 1 , у] п р и / > 2 ,
B(i, 1) = Л [/, 1] п р и / > 2 .
Д а н н ы е с о о т н о ш е н и я с л е д у ю т из того, что в э т и х
случаях рассматриваемая область матрицы Л содержит
т о л ь к о один э л е м е н т м а т р и ц ы .
П р и 2^.1^.N и 2 ^ / ^ М д л я этой ф у н к ц и и м о ж н о
записать следующие рекуррентные соотношения:
В [>', у'] = 0, е с л и Л [/, / ] = 0
и
В [j, / ] = m i n {В [i- 1, у], В [f, у - 1], В [ i - 1 , у - 1 ] } + 1,
е с л и Л [/, / ] = 1.
П е р в о е с о о т н о ш е н и е п о к а з ы в а е т , что р а з м е р м а к с и
мального единичного блока с п р а в ы м нижним углом
в п о з и ц и и (г, у) р а в е н н у л ю в с л у ч а е Л [/, у] = 0.
Убедимся в правильности второго соотношения. Дей
с т в и т е л ь н о , в е л и ч и н а B[i—1, у] с о о т в е т с т в у е т м а к с и
мальному р а з м е р у единичного блока т а б л и ц ы А с пра
в ы м н и ж н и м у г л о м в п о з и ц и и (i—1, у). Т о г д а р а з м е р
единичного блока с п р а в ы м нижним углом в позиции
(i, у) не п р е в ы ш а е т величину В [г— 1, y]-f 1, т а к к а к к блоку
в позиции ( г — 1 , у) могла д о б а в и т ь с я только одна с т р о к а .
В е л и ч и н а В [г, / — 1 ] с о о т в е т с т в у е т м а к с и м а л ь н о м у
р а з м е р у единичного блока т а б л и ц ы Л с п р а в ы м нижним
у г л о м в п о з и ц и и (/, у'-— 1). Т о г д а р а з м е р е д и н и ч н о г о
б л о к а с п р а в ы м н и ж н и м у г л о м в п о з и ц и и (/, у") не п р е в ы
ш а е т в е л и ч и н у В [», у " — 1 ] - | - 1 , т а к к а к к б л о к у в п о з и ц и и
(i—1, у) мог д о б а в и т ь с я т о л ь к о один с т о л б е ц .
В е л и ч и н а В [г— 1, у — 1] с о о т в е т с т в у е т м а к с и м а л ь н о м у
р а з м е р у единичного блока т а б л и ц ы Л с п р а в ы м нижним
у г л о м в п о з и ц и и (i—1, у — 1). Т о г д а р а з м е р е д и н и ч н о г о
б л о к а с п р а в ы м н и ж н и м у г л о м в п о з и ц и и (г, у) не п р е в ы
ш а е т в е л и ч и н у В [г— 1, у— 1 ]-f-1, т а к к а к к б л о к у в п о з и
ции (/ — 1, у"—1) м о г л и д о б а в и т ь с я т о л ь к о о д н а с т р о к а
и один столбец.
191
И т а к , р а з м е р единичного блока с правым нижним
у г л о м в п о з и ц и и (i, /') р а в е н m\n{B[i — 1, у], В |/, у — 1],
В | 1 , 1 ] : = А [ 1 , 1]
н ц д л я j от 2 до 6
| B [ l , j ] : = A [ l , j]
кц
н ц д л я i от 2 до 5
| B [ i , l ] : = A [ i , 1]
кц (4.8)
н ц д л я i от 2 до 5
н ц д л я j от 2 до 6
если A[i, j ] : = 1
то
B [ i , j ] : = m i n ( B l i , j - l L B [ i - 1 , j])
B[i, j ] : = m i n ( B [ i , j], B [ i - 1 , j - l ] ) + l
иначе
B[i, j ] : = 0
все
кц
кц
6.3. В ы ч и с л е н и е э л е м е н т о в д в у м е р н о й т а б л и ц ы
с дополнительными ограничениями
192
П у с т ь Т о б о з н а ч а е т ф у н к ц и ю , з н а ч е н и е которой со
ответствует решению нашей задачи. Аргументами у
э т о й ф у н к ц и и я в л я е т с я к о л и ч е с т в о п р е д м е т о в (по э т о м у
- а р г у м е н т у м о ж н о о п р е д е л и т ь их с т о и м о с т и и м а с с ы
соответствующих предметов), а т а к ж е максимальная
с у м м а р н а я масса, которую можно унести.
Д л я н а ш е й з а д а ч и Г ( 5 , 16) о п р е д е л и м п о д з а д а ч и
Т(i, / ) , где i о б о з н а ч а е т к о л и ч е с т в о н а ч а л ь н ы х п р е д м е
т о в , из к о т о р ы х м о ж н о о с у щ е с т в л я т ь в ы б о р , а / о п р е д е
л я е т м а к с и м а л ь н о возможную с у м м а р н у ю массу уноси
м ы х п р е д м е т о в . О т м е т и м , что в в е д е н н ы й т а к и м о б р а з о м
первый п а р а м е т р i определяет как количество предметов
д л я п о д з а д а ч и , т а к и з н а ч е н и я их с т о и м о с т е й и м а с с из
т а б л и ц С и М.
О п р е д е л и м с н а ч а л а н а ч а л ь н ы е з н а ч е н и я ф у н к ц и и Т.
П р и н у л е в ы х з н а ч е н и я х одного из а р г у м е н т о в з н а ч е н и е
функции равно нулю:
7 ( 0 , 0) = 0,
Т(0, / ) = 0 п р и / > 1 ,
T(i, 0) = 0 при / > 1 .
О п р е д е л и м в о з м о ж н ы е з н а ч е н и я ф у н к ц и и /' («, /') при
ненулевых значениях аргументов.
Р е ш е н и е п о д з а д а ч и , соответствующей функции Т (i, /),
может быть сведено к двум возможностям: уносится ли
п р и н а и л у ч ш е м р е ш е н и и п р е д м е т с н о м е р о м i или нет.
Е с л и п р е д м е т не у н о с и т с я , то р е ш е н и е задачи
с i предметами сводится к решению подзадачи с
( — 1 п р е д м е т а м и , т. е.
Е с л и п р е д м е т с н о м е р о м / у н о с и т с я , то это у м е н ь
шает максимально возможную суммарную массу для
i—1 п е р в ы х п р е д м е т о в на в е л и ч и н у M[i], о д н о в р е м е н н о
при этом у в е л и ч и в а я з н а ч е н и е р е ш е н и я д л я о с т а в ш и х с я
п р е д м е т о в T(i— 1, j — M[i]) на в е л и ч и н у C[i], т. е.
T(i, / ) = 7 - ( i - l , /)
при j<M[i],
T(i, j)=max(T(i-l, j), T(i-l, j-M[i\)+C[i\
при j"^M[i].
П у с т ь з а д а н ы следующие з н а ч е н и я стоимости и мас
сы д л я 5 п р е д м е т о в :
С[1] = 5, М [1] = 4;
С [2] = 7, Af[2] = 5;
С[3] = 4, Af[3] = 3;
С [4] = 9, Af [4] = 7;
С [5] = 8, Af [5] = 6.
Т а б л и ц а з н а ч е н и й ф у н к ц и и Т, к о т о р у ю м ы так
ж е н а з о в е м Т, в ы г л я д и т с л е д у ю щ и м о б р а з о м :
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 5 5 5 5 5 5 5 5 5 5 5 5 5
2 0 0 0 0 5 7 7 7 7 12 12 12 12 1-2 12 12 12
3 0 0 0 4 5 7 7 9 11 12 12 12 16 16 16 16 16
4 0 0 0 4 5 7 7 9 11 12 13 14 16 16 18 20 21
5 0 0 0 4 5 7 8 9 11 12 13 15 16 17 19 20 21
С л е д о в а т е л ь н о , р е ш е н и е з а д а ч и 7 ( 5 , 16) = 2 1 , т. е.
м о ж н о у н е с т и п р е д м е т о в на 21 р у б л ь .
П р и в е д е м одну из в о з м о ж н ы х р е а л и з а ц и й .
194
Т[0, 0]: = 0
н ц д л я j от 1 до 16
| Т [ 0 , j] = 0
кц
н ц д л я i от 1 до 5
| T [ i , 0] = 0 (4.9)
кц
н ц д л я i от 1 до 5
нц д л я j от 1 до 16
е с л и j > = М [i]
то
T [ i , j] = m a x ( T [ i — 1 , j], T [ i - 1 , j_M[i]]+C[i])
иначе
T [ i , j] = T [ i - l , j]
все
кц
кц
1. К к а к и м п о д з а д а ч а м м о ж е т с в о д и т ь с я п о и с к о д н о й
ф а л ь ш и в о й м о н е т ы с р е д и 27 монет, е с л и и з в е с т н о , что
о н а л е г ч е д р у г и х , а все о с т а л ь н ы е и м е ю т о д и н а к о в у ю
массу?
2. К к а к и м п о д з а д а ч а м м о ж е т с в о д и т ь с я з а д а ч а в ы
ч и с л е н и я з н а ч е н и я JV! (N\ = 1 ' 2 - 3 - . . . '/V)?
3 . К к а к и м п о д з а д а ч а м м о ж е т с в о д и т ь с я з а д а ч а по
иска суммы положительных элементов таблицы, состоя
щ е й из 10 э л е м е н т о в ?
4. Я в л я ю т с я ли п р а в и л ь н ы м и рекуррентные у р а в н е
н и я , где i — н а т у р а л ь н о е ч и с л о :
а ) S(i) = S(i—l) — ai,
б) S(i) = S(i-l) + S(i — 1) д л я i > 2 ,
S(l)=l;
в) P(i) = P{i—\)i для i > 2 ,
Я(1)=1;
г) S ( t ) = S (i div 2 ) + 1 д л я i > 2 ,
S(0)=1;
195
д ) S(i) = S(i—\)+[/i для i>l,
S ( 0 ) = 0;
е) S(i) = S ( i - l ) + ( — l) x /i i i
для
S(0)=1;
ж) F(i) = F ( ( i d i v 2 ) + l ) + l для i>2,
F ( 1 ) = 0, F ( l ) = -1?
5. У к а з а т ь , п р и к а к и х р а з м е р а х т а б л и ц м о г у т быть
реализованы рекуррентные соотношения:
а ) S(i)=S(i6iw2) + S{i — 1) д л я 2<г<20,
S(l)=l;
б ) S ( i , / ) = m i n ( S ( t — 1 , / ) , S(i— 1, / — 1 ) , а,,) для
2<i<iV, 2</<Af,
S ( l , / ) = а , S ( i , 1) = а „ ?
17
6. П у с т ь У , = 1,5; W j = - i t i - Получить у , 2 v 3 , У Я ,
где л — з а д а н н о е н а т у р а л ь н о е число.
7. П у с т ь дг = с, x — d\ x — х _i + х , _ + 6.
0 x t { 2 Получить
х . х , . . . , х„, где га, Ь, с, d — з а д а н н ы е н а т у р а л ь н ы е ч и с л а .
2 3
8. П у с т ь н, = 0, « 2 = 1 ; « i = M j _ i + . « i _ 2 i - i ; - 2 - По - u — м
9. П у с т ь я = а, = 1; а , = ^ _ , + « , - 2 -
0
а 1
Получить а , 2 а , 3
а, п где л — з а д а н н о е н а т у р а л ь н о е число.
10. П у с т ь а, = 6, = 1, а, = 0,5 (д/&,_i + 0,5д/я,_ i ) , 6 = ;
= 2«, _, + й<_ . П о л у ч и т ь а , а ,
2
1 2 3 а,
п b, Ь,
2 3 где
га — н а т у р а л ь н о е число.
11. П у с т ь а, = и, bi — v, a — 2b _ -\-a _ i i l i u 6 = 2of_ -f-
i 1
+ П о л у ч и т ь а , а-„ 2 а, Ь, Ь,
п 2 3 Ь , г д е га — н а т у
п
га — н а т у р а л ь н о е число.
13. П у с т ь a, = 1, &, = 1, а = 2'а,_ ! + !'!&,_!, ^ = / ! а , _ , + г
+ 3'й,_,. П о л у ч и т ь а , а 2 3 , я „ , 6 , Ь ,/>„, 2 3 г д е га — н а т у
р а л ь н о е число.
196
14. В ы ч и с л и т ь з н а ч е н и е д р о б е й .
а) б)
1 +
2 +
3 +
3" + '
п + п+\
я+1
в) г)
—1
1 + 1 +
—1
п+1 (-1)"
п-\-
л+ 2 га+1
Д) е)
12 2 +
12
16
12 4 +
Т_
12 + Я+1 + я+ 2
12
ж)
2 +
24 -24
(-1)"я!
п+ 1
197
ЗАДАЧИ ПОВЫШЕННОЙ СЛОЖНОСТИ
1. С о с т а в и т ь а л г о р и т м о п р е д е л е н и я к о л и ч е с т в а ш е с
тизначных «счастливых» т р а м в а й н ы х билетов, у которых
сумма первых трех цифр совпадает с суммой трех по
следних.
2. С о с т а в и т ь алгоритм определения количества
2Л^-значных « с ч а с т л и в ы х » б и л е т о в , у к о т о р ы х с у м м а
п е р в ы х N ц и ф р р а в н а с у м м е п о с л е д н и х N ц и ф р ; Af—•
произвольное натуральное число.
3. Н а й т и к о л и ч е с т в о га-значных чисел в д е с я т и ч н о й
системе счисления, у к а ж д о г о из которых сумма цифр
р а в н а k. П р и э т о м в к а ч е с т в е n - з н а ч н о г о ч и с л а м ы
допускаем и числа, н а ч и н а ю щ и е с я с одного или несколь
ких н у л е й . Н а п р и м е р , 000102 р а с с м а т р и в а е т с я к а к ш е с
тизначное число, сумма цифр которого р а в н а 3.
4 . Ф и ш к а м о ж е т д в и г а т ь с я по п о л ю д л и н о й N т о л ь к о
в п е р е д . Д л и н а х о д а ф и ш к и не б о л е е К- Н а й т и ч и с л о
р а з л и ч н ы х п у т е й , по к о т о р ы м ф и ш к а м о ж е т п р о й т и п о л е
от п о з и ц и и 1 д о п о з и ц и и N.
П р и м е р . N = 4, К = 2.
В о з м о ж н ы е д л и н ы ходов:
1, 1. 1
1, 2
2, 1
О т в е т : 3.
5 . П о к у п а т е л ь имеет купюры достоинством А , х А, п
т о в а р а Р, к о т о р ы й п о к у п а т е л ь н е м о ж е т к у п и т ь , п о т о м у
что нет в о з м о ж н о с т и точно р а с с ч и т а т ь с я з а э т о т т о в а р
с п р о д а в ц о м , хотя д е н е г н а п о к у п к у е г о д о с т а т о ч н о .
6. У п о к у п а т е л я е с т ь п м о н е т д о с т о и н с т в о м / / , , Н . п
У п р о д а в ц а е с т ь т монет д о с т о и н с т в о м В ь В . Может
т
198
ценной с п р а в а д и а г о н а л я м и , п р о х о д я щ и м и ч е р е з A [i, /]
(см. таблицу).
* * * * *
* * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* *
* * •
з а д а н н ы е строки символов.
О б о з н а ч и м ч е р е з d(x, у) м и н и м а л ь н о е к о л и ч е с т в о
вставок, удалений и замен символов, которое необходимо
д л я п р е о б р а з о в а н и я х в у.
Н а п р и м е р : d (ptslddf, lsgldds) = 3
i i УД а л е н и е
P . , , , вставка g замена /
y. tsglddf
J J t {
ptslddf tslddf ^ tsgldds
Д л я з а д а н н ы х с т р о к x и у о п р е д е л и т ь d(x, у).
199
11. Д а н ы д в е с т р о к и х и у. С т р о к а х с о с т о и т из н у л е й
и е д и н и ц , с т р о к а у с о с т о и т из с и м в о л о в А и В. М о ж н о л и
с т р о к у х п р е о б р а з о в а т ь в с т р о к у у по с л е д у ю щ е м у
правилу: цифра 0 преобразуется в непустую последова
тельность букв Л, а ц и ф р а 1 — л и б о в непустую последо
вательность букв Л, либо в непустую последовательность
букв В?
12. П у с т ь и з в е с т н о , что д л я п е р е м н о ж е н и я м а т р и ц ы
р а з м е р а пХт на м а т р и ц у р а з м е р а m X / г т р е б у е т с я
n-m-k операций, и в результате получается матрица
размера яХ&-
Необходимо определить, какое минимальное число
операций потребуется для перемножения s матриц А и
A , з а д а н н ы х с в о и м и р а з м е р а м и n(i)-m(i).
s П р и этом
можно перемножать любые две рядом стоящие матрицы.
Замечание:
п (г) — ч и с л о с т р о к в м а т р и ц е А ь
т (г) — ч и с л о с т о л б ц о в в м а т р и ц е Л , ;
п (i) = m ( / + 1 ) .
i—l, т. П а р а л л е л е п и п е д м о ж е т располагаться
в п р о с т р а н с т в е л ю б ы м из с п о с о б о в , при к о т о р ы х его
р е б р а п а р а л л е л ь н ы осям координат.
Найти максимальную последовательность вкладывае
мых друг в друга п а р а л л е л е п и п е д о в .
16. З а д а н ы т р и ч и с л а а, Ь, с. М о ж н о л и п р е д с т а в и т ь
число а таким образом, чтобы
a = x[l]-x[2]-...-x[k]= П х [i].
m путей
Рис. 29
201
П у т и п р о н у м е р о в а н ы от 1 до га.
Н а вход в п р о и з в о л ь н о м п о р я д к е п о д а е т с я п в а г о н о в ,
з а н у м е р о в а н н ы х ч и с л а м и от 1 д о п. К а ж д ы й в а г о н
н е о б х о д и м о н а п р а в и т ь на один из с т а н ц и о н н ы х путей,
о т к у д а е г о з а т е м п е р е в о д я т на в ы х о д . Н а л ю б о й путь
можно направить произвольное количество вагонов. На
выходе необходимо сформировать состав с номерами
вагонов в возрастающем порядке.
О п и с а т ь а л г о р и т м , к о т о р ы й по д а н н ы м п, т и исход
ной п о с л е д о в а т е л ь н о с т и н о м е р о в в а г о н о в о т в е ч а е т на
вопрос, можно ли выполнить требуемую сортировку.
18. В о з в е с т и ч и с л о А в н а т у р а л ь н у ю с т е п е н ь п з а к а к
можно меньшее количество умножений.
19. З а д а н ы д в е п о с л е д о в а т е л ь н о с т и чисел z и у.
М о ж н о ли получить последовательность z вычеркивани
ем э л е м е н т о в из у?
2 0 . В в о д я т с я д в е п о с л е д о в а т е л ь н о с т и х и у. Н а й т и
м а к с и м а л ь н у ю по д л и н е п о с л е д о в а т е л ь н о с т ь г, к о т о р у ю
м о ж н о п о л у ч и т ь в ы ч е р к и в а н и е м э л е м е н т о в к а к из х, т а к
и из у.
Н а п р и м е р , д л я x = «abacs», y — «dalas» последова
т е л ь н о с т ь z = «aas».
21. Пусть х и у — две бинарных последовательности
(т. е. э л е м е н т ы п о с л е д о в а т е л ь н о с т е й — н у л и и е д и н и ц ы ) ;
х и у можно р а с с м а т р и в а т ь как з а п и с ь в двоичной форме
некоторых двух натуральных чисел.
Н а й т и м а к с и м а л ь н о е ч и с л о z, д в о и ч н у ю з а п и с ь кото
р о г о м о ж н о п о л у ч и т ь в ы ч е р к и в а н и е м ц и ф р к а к из х, т а к
и из у. О т в е т в ы д а т ь в в и д е б и н а р н о й п о с л е д о в а т е л ь
ности.
1. С у щ е с т в у е т и г р а д л я одного и г р о к а , к о т о р а я н а ч и
нается с з а д а н и я цепочки с N вершинами. Пример
г р а ф и ч е с к о г о п р е д с т а в л е н и я ц е п о ч к и п о к а з а н на р и с у н
ке 30, а, где N = 4. Д л я к а ж д о й в е р ш и н ы ц е п о ч к и з а д а
ется значение — целое число, а д л я к а ж д о г о ребра —
202
2 +
a 5 з
3
в
Рис. 30
с о е д и н е н ы р е б р о м Е;
р е б р о Е и в е р ш и н ы V и V з а м е н я ю т с я новой в е р ш и
} 2
ной со з н а ч е н и е м , р а в н ы м р е з у л ь т а т у в ы п о л н е н и я о п е р а
ции, о п р е д е л е н н о й м е т к о й р е б р а Е, н а д з н а ч е н и я м и
вершин V и V . x 2
И г р а з а к а н ч и в а е т с я , к о г д а б о л ь ш е нет ни о д н о г о
р е б р а . Р е з у л ь т а т и г р ы — это ч и с л о , р а в н о е з н а ч е н и ю
оставшейся вершины.
Пример игры. Игрок начал игру с удаления
р е б р а 2 ( р и с . 30, б), з а т е м — р е б р а 3 ( р и с . 3 0 , в), н а к о
нец, р е б р а 7. Р е з у л ь т а т о м и г р ы б у д е т ч и с л о 0 ( р и с . 30, г).
Н а п и с а т ь п р о г р а м м у , к о т о р а я по з а д а н н о й ц е п о ч к е
вычисляет максимальное значение оставшейся вершины
и в ы в о д и т с п и с о к всех тех р е б е р , у д а л е н и е к о т о р ы х н а
п е р в о м х о д е и г р ы п о з в о л я е т п о л у ч и т ь это з н а ч е н и е .
Входные данные находятся в файле с именем
C H A I N . I N и имеют следующую структуру.
В п е р в о й с т р о к е н а х о д и т с я число N (N ^.100) — к о л и
чество вершин цепочки.
203
В к а ж д о й из п о с л е д у ю щ и х N с т р о к а х н а х о д я т с я
значения в вершинах — целые числа.
В к а ж д о й из п о с л е д у ю щ и х N—1 строк находится
тип о п е р а ц и й ( + или *) д л я с о о т в е т с т в у ю щ е г о р е б р а .
Ребро с номером / соединяет вершины с номерами / и
204
второй строке д о л ж н ы находиться номера палат, разде
ленные пробелом, куда помещаются больные грип
пом «А».
3. З а д а е т с я н а т у р а л ь н о е ч и с л о N ( А / ^ 9 9 9 ) . Д в о е
и г р а ю щ и х н а з ы в а ю т по о ч е р е д и ч и с л а , м е н ь ш е 1000, по
с л е д у ю щ и м п р а в и л а м . Н а ч и н а я с ч и с л а N, к а ж д о е новое
ч и с л о д о л ж н о у в е л и ч и в а т ь одну из ц и ф р п р е д ы д у щ е г о
ч и с л а ( в о з м о ж н о , н е з н а ч а щ и й н у л ь ) на 1, 2 или 3. П р о
и г р а в ш и м с ч и т а е т с я тот, кто н а з ы в а е т ч и с л о 9 9 9 .
Д л я заданного N необходимо определить, может ли
в ы и г р а т ь и г р о к , д е л а ю щ и й п е р в ы й ход, при н а и л у ч ш и х
последующих ходах противника. Вывести сообщение
« П е р в ы й в ы и г р ы в а е т » или « П е р в ы й п р о и г р ы в а е т » . В
случае возможности выигрыша первым игроком требу
е т с я н а п е ч а т а т ь все его в о з м о ж н ы е п е р в ы е х о д ы .
4. З а д а н ч и с л о в о й т р е у г о л ь н и к из N с т р о к . Н а п и с а т ь
программу, которая определяет максимальную сумму
ч и с е л , р а с п о л о ж е н н ы х на пути, к о т о р ы й н а ч и н а е т с я
с в е р х н е г о ч и с л а и з а к а н ч и в а е т с я на к а к о м - н и б у д ь ч и с л е
в основании треугольника (максимум суммы — среди
всех т а к и х п у т е й ) .
7
3 8
8 1 0
2 7 7 4
4 5 2 6 5
Н а к а ж д о м ш а г е м о ж н о д в и г а т ь с я к с о с е д н е м у по
д и а г о н а л и ч и с л у в л е в о - в н и з или в п р а в о - в н и з . Ч и с л о
строк в треугольнике больше 1 и меньше либо равно
100. Все ч и с л а в т р е у г о л ь н и к е — ц е л ы е в и н т е р в а л е
м е ж д у 0 и 99 в к л ю ч и т е л ь н о .
5. В м а г а з и н е к а ж д ы й т о в а р и м е е т цену. Н а п р и м е р ,
ц е н а одного ц в е т к а р а в н а 2, а ц е н а одной в а з ы р а в н а
5. Ч т о б ы п р и в л е ч ь п о к у п а т е л е й , м а г а з и н в в е л с к и д к и :
р е ш и л п р о д а в а т ь н а б о р о д и н а к о в ы х или р а з н ы х т о в а р о в
205
по п о н и ж е н н о й ц е н е . Н а п р и м е р : т р и ц в е т к а з а 5 в м е с т о
б или д в е в а з ы в м е с т е с о д н и м ц в е т к о м з а 10 в м е с т о 12.
Н а п и с а т ь п р о г р а м м у , в ы ч и с л я ю щ у ю н а и м е н ь ш у ю це
ну, к о т о р у ю п о к у п а т е л ь д о л ж е н з а п л а т и т ь з а з а д а н н ы е
покупки. Оптимальное решение д о л ж н о быть получено
посредством скидок. Н а б о р товаров, который требуется
к у п и т ь , н е л ь з я д о п о л н я т ь ничем, д а ж е е с л и б ы это
снизило общую стоимость набора. Д л я описанных выше
цен и с к и д о к н а и м е н ь ш а я цена з а т р и ц в е т к а и д в е в а з ы
р а в н а 14: д в е в а з ы и один ц в е т о к п р о д а ю т с я по сни
ж е н н о й ц е н е з а 10 и д в а ц в е т к а — по о б ы ч н о й ц е н е з а 4.
Входные данные содержатся в двух файлах:
INPUT.TXT и OFFER.TXT. Первый файл описывает
покупки («корзину с покупками»), второй — скидки.
В обоих ф а й л а х с о д е р ж а т с я только целые числа.
П е р в а я строка ф а й л а I N P U T . T X T содержит коли
чество b р а з л и ч н ы х в и д о в т о в а р а в к о р з и н е (О^.Ь^.5).
К а ж д а я из с л е д у ю щ и х b с т р о к с о д е р ж и т з н а ч е н и я
k и р. З н а ч е н и е с — у н и к а л ь н ы й к о д т о в а р а (1 ^ с ^ 9 9 9 ) .
Значение р задает, сколько единиц товара находится
в к о р з и н е (1 < ; £ ^ 5 ) . О б р а т и т е в н и м а н и е , что о б щ е е
к о л и ч е с т в о т о в а р о в в к о р з и н е м о ж е т б ы т ь не б о л е е
55 = 25 (единиц).
П е р в а я строка ф а й л а O F F E R . T X T с о д е р ж и т коли
чество s в о з м о ж н ы х с к и д о к ( 0 ^ s ^ 9 9 ) . К а ж д а я из
с л е д у ю щ и х s с т р о к о п и с ы в а е т одну с к и д к у , о п р е д е л я я
набор товаров и общую стоимость набора. Первое число
п в такой строке определяет количество р а з л и ч н ы х видов
т о в а р а в н а б о р е ( 1 ^ « ^ 5 ) . С л е д у ю щ и е п л а р чисел
(с, k) у к а з ы в а ю т , что k е д и н и ц т о в а р а с кодом с в к л ю ч е н ы
в н а б о р д л я с к и д к и (1 ^ / г ^ 5 , 1 ^ x ^ 9 9 9 ) . П о с л е д н е е
число в строке р определяет уменьшенную стоимость
набора ( 1 ^ р ^ 9 9 9 9 ) . Стоимость набора меньше сум
марной стоимости отдельных единиц товаров в наборе.
З а п и с а т ь в выходной ф а й л O U T P U T . T X T одну строку
с н а и м е н ь ш е й в о з м о ж н о й с у м м а р н о й с т о и м о с т ь ю поку
пок, з а д а н н ы х во входном ф а й л е .
206
6. В ф а й л о в о й с и с т е м е н а с т е н н о г о п е р с о н а л ь н о г о
компьютера ВС-1 (Висячая Система) ф а й л ы организова
н ы в к а т а л о г и . В к о м п ь ю т е р е нет п о н я т и я у с т р о й с т в а
и поэтому полное имя ф а й л а является строкой, состоя
щ е й из и м е н к а т а л о г о в и и м е н и ф а й л а , р а з д е л е н н ы х
с и м в о л о м \ , п р и ч е м \ не м о ж е т б ы т ь п е р в ы м , п о с л е д н и м
с и м в о л о м , а т а к ж е идти д в а р а з а п о д р я д .
И м я файла (каталога) может быть произвольной
д л и н ы , но д л и н а п о л н о г о и м е н и ф а й л а не м о ж е т б ы т ь
длиннее N символов. В качестве символов, допустимых
к употреблению в именах файлов (каталогов), могут
и с п о л ь з о в а т ь с я с и м в о л ы из а л ф а в и т а , с о с т о я щ е г о из
К б у к в ( с и м в о л \ не входит в их ч и с л о ) .
Д л я данных / \ ( 1 < / ( < 1 3 ) и N ( l < i V < 5 0 ) опреде
лить максимальное число файлов, которое можно запи
с а т ь на д а н н ы й к о м п ь ю т е р .
7. Во в р е м я т р а н с л я ц и и к о н ц е р т а « П е с н я г о д а » п р е д
п р и н и м а т е л ь К р е ш и л с д е л а т ь б и з н е с на п р о и з в о д с т в е
кассет. Он имеет М кассет с длительностью звучания
D к а ж д а я и хочет з а п и с а т ь на них м а к с и м а л ь н о е ч и с л о
п е с е н . Эти песни (их о б щ е е к о л и ч е с т в о N) п е р е д а ю т с я
в п о р я д к е 1, 2, N и имеют з а р а н е е известные ему
д л и т е л ь н о с т и з в у ч а н и я L(l), L (2), L(N). Предприни
м а т е л ь м о ж е т в ы п о л н и т ь одно из с л е д у ю щ и х д е й с т в и й :
з а п и с а т ь о ч е р е д н у ю п е с н ю на к а с с е т у ( е с л и она т у д а
п о м е щ а е т с я ) и л и п р о п у с т и т ь ее;
е с л и п е с н я на к а с с е т у не п о м е щ а е т с я , то м о ж е т
п р о п у с т и т ь э т у песню или н а ч а т ь з а п и с ы в а т ь ее на
н о в у ю к а с с е т у , при этом с т а р у ю к а с с е т у о т л о ж и т ь и т у д а
у ж е ничего не з а п и с ы в а т ь .
О п р е д е л и т ь м а к с и м а л ь н о е к о л и ч е с т в о песен, к о т о р ы е
п р е д п р и н и м а т е л ь м о ж е т з а п и с а т ь на к а с с е т ы .
8. У ч и т е л ь и н ф о р м а т и к и ж и в е т на N-м э т а ж е д е в я т и
этажного дома с лифтом, который может останавливать
с я на к а ж д о м э т а ж е . М е ж д у с о с е д н и м и э т а ж а м и д о м а
и м е е т с я л е с т н и ц а из д в у х п р о л е т о в , р а з д е л е н н ы х п л о
щ а д к о й , по k с т у п е н е к в к а ж д о м п р о л е т е . С к о л ь к и м и
207
с п о с о б а м и у ч и т е л ь м о ж е т п о д н я т ь с я на свой э т а ж , е с л и ,
п о д н и м а я с ь по л е с т н и ц е , м о ж н о с т а н о в и т ь с я на с л е д у ю
щ у ю с т у п е н ь к у или идти ч е р е з одну с т у п е н ь к у ?
9. С р е д и всех Л/-битных д в о и ч н ы х чисел у к а з а т ь ко
л и ч е с т в о тех, у к о т о р ы х в д в о и ч н о й з а п и с и нет п о д р я д
и д у щ и х k е д и н и ц . С а м и ч и с л а в ы д а в а т ь не н а д о ! N и k —
н а т у р а л ь н ы е , k^N ^.30.
10. В с в я з и с о т к р ы т и е м о л и м п и а д ы по и н ф о р м а т и к е
N ч е л о в е к (JVsJ 10) р е ш и л и у с т р о и т ь в е ч е р и н к у . Д л я п р о
в е д е н и я в е ч е р и н к и д о с т а т о ч н о к у п и т ь MF б у т ы л о к ф а н
т ы , MB б а н а н о в и МС т о р т о в . Т р е б у е т с я о п р е д е л и т ь
минимальный взнос участника вечеринки.
При покупке определенных наборов товара действу
ют п р а в и л а оптовой т о р г о в л и : с т о и м о с т ь н а б о р а т о в а р а
м о ж е т о т л и ч а т ь с я от с у м м а р н о й с т о и м о с т и о т д е л ь н ы х
частей.
Н а п и с а т ь п р о г р а м м у , к о т о р а я по в х о д н ы м д а н н ы м
определяет минимальный взнос участника вечеринки.
208
ж е н н о г о ц и к л а . У с л о в и е if во в л о ж е н н ы х ц и к л а х б у д е т
п р о в е р я т ь с я 1 0 р а з , п о э т о м у б у д е м г о в о р и т ь , что с л о ж
6
н о с т ь этого а л г о р и т м а 10 . 6
Яе = («1 + «г + а ) — ( а + а ) .
3 4 5
Е с л и 0 ^ а ^ 9 , то б и л е т « с ч а с т л и в ы й » , и н а ч е — нет.
6
Т а к и м о б р а з о м , мы м о ж е м у б р а т ь шестой в л о ж е н н ы й
цикл:
Count: = 0 ;
for a l : = 0 to 9 do
for a 2 : = 0 to 9 do
for a 3 : = 0 to 9 do
for a 4 : = 0 to 9 do
for a 5 : = 0 to 9 do
begin
a 6 : = ( a l + a2 + a 3 ) — ( a 4 + a5);
if ( a 6 > = 0 ) a n d ( a 6 < = 9 )
t h e n C o u n t : = C o u n t + 1;
end;
С л о ж н о с т ь а л г о р и т м а 10 . И с п о л ь з у я з а в и с и м о с т ь a
5
6
от п е р в ы х п я т и ц и ф р , мы у м е н ь ш и л и с л о ж н о с т ь а л г о
р и т м а и, в о о б щ е г о в о р я , в р е м я в ы п о л н е н и я п р о г р а м м ы
в 10 р а з !
Вариант 3 . Е с л и к о м б и н а ц и й а а а первых трех цифр
х 2 3
+ а = а + а + а будет
3 4 5 6 C[Tf.
Действительно, каждое «счастливое» шестиразрядное
число может быть получено «склейкой» двух произволь
н ы х т р е х р а з р я д н ы х чисел с о д и н а к о в о й с у м м о й ц и ф р .
В с е г о с у щ е с т в у е т 28 в с е в о з м о ж н ы х з н а ч е н и й с у м м Т —
от 0 = 0 + 0 + 0 до 27 = 9 + 9 + 9. П о д с ч и т а е м С [/], / =
209
= 0, 27, з а т е м н а х о д и м и н т е р е с у ю щ е е н а с к о л и ч е с т в о
« с ч а с т л и в ы х » б и л е т о в : С[Of+C[if+ ... + С[27] . 2
З а м е т и м , что « с ч а с т л и в ы х » б и л е т о в с с у м м о й Т с т о л ь
ко ж е , с к о л ь к о и с с у м м о й 2 7 — Т . Д е й с т в и т е л ь н о , е с л и
билет аа а а а а
{ 2 3 4 5 с с у м м о й Т—«счастливый»,
6 то т а к о
в ы м ж е я в л я е т с я и б и л е т ( 9 9 9 9 9 9 — a a a a a a^)
x 2 3 4 с суммой
b
2 7 — Т . П о э т о м у ч и с л о б и л е т о в м о ж н о в ы ч и с л я т ь и по
ф о р м у л е 2 ( С | 0 ] + . . . + С [ 1 3 ] ) , т. е. р а с с м а т р и в а т ь т о л ь
2 2
ко с у м м ы от 0 д о 13.
v a r С : a r r a y [ 0 . . 1 3 ] of l o n g i n t ;
{ м а с с и в С из 14 э л е м е н т о в — п о ч и с л у р а с с м а т р и в а е м ы х
сумм}
Count: = 0 ;
for Т : = 0 t o 13 do C [ T ] : = 0 ;
for a l : = 0 to 9 do { п е р е б и р а е м все}
for a 2 : = 0 t o 9 do { в о з м о ж н ы е a l a 2 a3}
for a 3 : = 0 to 9 do
begin
T : = a l - f - a 2 + a3;
if T < = 13 {если с у м м а не п р е
в ы ш а е т 13, то}
then С [Т]: = С [ Т ] + 1
{нашли еще один
билет}
end; {с с у м м о й Т}
for Т : = 0 t o 13 do {считаем число би
летов}
C o u n t : = C o u n t + С [Т]* С [Т]; "
C o u n t : = C o u n t * 2; {удваиваем сумму}
Вариант 4. В в а р и а н т е 3 м ы п е р е б и р а л и к о м б и н а ц и ю
ц и ф р и и с к а л и к о л и ч е с т в о к о м б и н а ц и й с с у м м а м и С [71.
С е й ч а с м ы п о й д е м от с у м м ы Т, и по ней б у д е м о п р е д е
лять, какое количество комбинаций а а а е е имеет.
1 2 3
210
М и н и м а л ь н о е значение, которое может п р и н и м а т ь
а — это m a x {О, Т—18}.
и Ч л е н Т—18 п о я в л я е т с я из
с л е д у ю щ и х с о о б р а ж е н и й : п у с т ь а = а = 9, т о г д а a =
2 3 t
= Т—18, но а не м о ж е т б ы т ь м е н ь ш е 0. М а к с и м а л ь н о е
х
з н а ч е н и е а = т'т{9, Т} ( т а к к а к а и а н е о т р и ц а т е л ь н ы ,
{ 2 3
т о а, ^ Т и о д н о в р е м е н н о а, ^ 9 ) .
Д л я ц и ф р ы а а н а л о г и ч н о п о л у ч а е м , что о н а л е ж и т
2
в п р е д е л а х от m a x { 0 , Т — а — 9} до m i n {9,
{ Т—а }. {
Ц и ф р а а по Т, а и а о п р е д е л я е т с я о д н о з н а ч н о .
ъ г 2
П о л у ч а е м , что к о м б и н а ц и й а , а а с с у м м о й Г и с п е р
2 3
вой ц и ф р о й Й! с т о л ь к о ж е , с к о л ь к о в о з м о ж н ы х ц и ф р а , 2
а именно
m i n {9, Т — а,} — m a x {0, Т—а, — 9}+1.
К а к и в в а р и а н т е 3, м ы м о ж е м р а с с м а т р и в а т ь д и а п а
з о н с у м м от 0 до 13.
Count: = 0 ;
for Т : = 0 to 13 do
begin
CT:=0;
for a l : = m a x ( 0 , T — 1 8 ) to m i n (9, T) do
CT: = C T + min(9, T — al) — max(0, T —al —
-9)+l;
C o u n t : = C o u n t + C T * CT
end;
C o u n t : — C o u n t * 2;
С л о ж н о с т ь этого а л г о р и т м а (т. е. к о л и ч е с т в о в ы п о л
нений операций присваивания внутри двух вложенных
циклов) есть 9 . 5
м н о г о в р е м е н и д л я п о л у ч е н и я р е з у л ь т а т а д а ж е на м о щ
ном к о м п ь ю т е р е . С л е д о в а т е л ь н о , н е о б х о д и м о р а з р а б о
т а т ь а л г о р и т м , к о т о р ы й не т р е б у е т г е н е р а ц и и всех ч и с е л .
211
О б о з н а ч и м ч е р е з S (k, i) к о л и ч е с т в о ^ р а з р я д н ы х
ч и с е л , с у м м а ц и ф р к о т о р ы х р а в н а i. Н а п р и м е р , 5 (2, 3) =
= 4, т а к к а к с у щ е с т в у е т 4 д в у р а з р я д н ы х ч и с л а ( 0 3 , 12,
2 1 , 30), с у м м а ц и ф р к о т о р ы х р а в н а 3 . Л е г к о з а м е т и т ь ,
что 5 ( 1 , 0 = 1 п р и / < К) и S ( 1 , i) = Q п р и г > 9 . П р е д п о
л о ж и м т е п е р ь , что м ы с у м е л и в ы ч и с л и т ь з н а ч е н и я в е л и
чин S (N, i) д л я всех i от 0 д о 9JV, т. е. мы з н а е м , с к о л ь к о
с у щ е с т в у е т Л / р а з р я д н ы х чисел с с у м м о й ц и ф р , р а в н о й
0, 1, 9JV (9iV — м а к с и м а л ь н а я с у м м а ц и ф р в Л/раз
р я д н о м ч и с л е ) . Т о г д а н е т р у д н о у б е д и т ь с я , что о б щ е е
к о л и ч е с т в о « с ч а с т л и в ы х » 2 М р а з р я д н ы х чисел р а в н о
Д е й с т в и т е л ь н о , п р и р е ш е н и и з а д а ч и 1 ( в а р и а н т 3) б ы
л о п о к а з а н о , что к а ж д о е « с ч а с т л и в о е » 2 Я р а з р я д н о е
число может быть получено «склейкой» двух произволь
ных ЛЛразрядных ч и с е л с о д и н а к о в о й с у м м о й ц и ф р .
Таким образом, необходимо уметь вычислять значе
н и я в е л и ч и н S(k, i) д л я всех k^.N, i^9k. Определим
с п о с о б в ы ч и с л е н и я S ( & + 1 , i) ч е р е з з н а ч е н и я в е л и ч и н
S (k, / ) , П о н я т н о , что л ю б о е ( £ + 1 ) р а з р я д н о с
ч и с л о м о ж е т б ы т ь п о л у ч е н о из ^ р а з р я д н о г о д о б а в л е н и
ем е щ е одного р а з р я д а ( ц и ф р ы ) . С л е д о в а т е л ь н о ,
где 1 , 2 , . . . — в о з м о ж н ы е д о б а в л е н н ы е ц и ф р ы . Я с н о , что
это 0, 1, т, где m = m i n ( 9 , i). С л е д о в а т е л ь н о ,
3. И с п о л ь з у е м м е т о д р е ш е н и я з а д а ч и 2.
О б о з н а ч и м и с к о м о е к о л и ч е с т в о газначных чисел в д е
с я т и ч н о й с и с т е м е с ч и с л е н и я , у к а ж д о г о из к о т о р ы х с у м
ма ц и ф р р а в н а k, ч е р е з С (k, п). П о с л е д н я я ц и ф р а ч и с л а
м о ж е т л е ж а т ь в п р о м е ж у т к е от 0 д о 9. В с о о т в е т с т в и и
с этим сумма цифр («—1)значного числа, получающая
ся из газначного ч и с л а о т б р а с ы в а н и е м п о с л е д н е й ц и ф р ы ,
212
м о ж е т п р и н и м а т ь одно из з н а ч е н и й к, к—1, k — 9.
О т с ю д а п о л у ч а е м , что
4. Очевидное решение з а д а ч и п р е д п о л а г а е т р а з л о ж е
ние ч и с л а N—1 на в с е в о з м о ж н ы е с у м м ы т а к и м о б р а з о м ,
ч т о б ы к а ж д о е с л а г а е м о е из с у м м ы не п р е в о с х о д и л о К-
О ч е в и д н о , что т а к и х р а з л о ж е н и й о ч е н ь много, о с о б е н н о
е с л и у ч и т ы в а т ь , что п о р я д о к с л а г а е м ы х в р а з л о ж е н и и
с у щ е с т в е н е н , т а к к а к он с о о т в е т с т в у е т р а з л и ч н о й п о с л е
д о в а т е л ь н о с т и ходов ф и ш к и . Н о о б р а т и м в н и м а н и е на то,
что в у с л о в и и з а д а ч и не т р е б у е т с я в ы п и с а т ь все эти
р а з л о ж е н и я , н е о б х о д и м о т о л ь к о у к а з а т ь их о б щ е е к о л и
чество!
О б о з н а ч и м ч е р е з S (/) к о л и ч е с т в о р а з л и ч н ы х путей,
по к о т о р ы м ф и ш к а м о ж е т п р о й т и п о л е от н а ч а л а д о
п о з и ц и и с н о м е р о м /. П р е д п о л о ж и м т е п е р ь , что д л я
л ю б о г о ( от 1 до i и з в е с т н ы з н а ч е н и я в е л и ч и н S (/).
З а д а ч а состоит в определении п р а в и л а вычисления зна
чения S ( / + l ) , используя значения известных величин.
Л е г к о з а м е т и т ь , что в п о з и ц и ю с н о м е р о м г + 1 ф и ш к а
м о ж е т п о п а с т ь т о л ь к о из п о з и ц и и i, i—1, . . . . i — s, где
s = m i n (К, i— 1) ( м ы р а с с м а т р и в а е м т о л ь к о п о з и ц и и с но
м е р а м и от 1 до N). С л е д о в а т е л ь н о ,
213
димо найти р а з м е р минимальной сдачи, которую прода
в е ц не м о ж е т в е р н у т ь , и с п о л ь з у я л ю б ы е и м е ю щ и е с я
т е п е р ь у него к у п ю р ы C ( е г о и п о к у п а т е л я ) . Д л я этого
t
у д о б н о о т с о р т и р о в а т ь к у п ю р ы по их д о с т о и н с т в у в по
рядке неубывания.
П р е д п о л о ж и м , что п р о д а в е ц м о ж е т в е р н у т ь л ю б у ю
с д а ч у от 1 до S , и с п о л ь з у я т о л ь к о п е р в ы е i к у п ю р . Д л я
следующей ( г + 1 ) - й купюры достоинства С , возможны
+ 1
2 ситуации.
1) C <.S-\-2.
i+l Т о г д а п о н я т н о , что п р о д а в е ц м о ж е т
в е р н у т ь л ю б у ю с д а ч у от 1 до С / - - 1 + 5 , т а к к а к л ю б а я
т
из э т и х с у м м п р е д с т а в и м а л и б о п е р в ы м и i к у п ю р а м и ,
л и б о (г + 1 )-й к у п ю р о й в м е с т е с н е к о т о р ы м и из п е р в ы х
i купюр.
2) С , > S + 1 . В этом с л у ч а е п р о д а в е ц не
+ 1 может
в е р н у т ь с д а ч у S + 1.
О п и ш е м а л г о р и т м в ы ч и с л е н и я S.
S:=0;
i : = l;
нц пока ( i < = N ) и ( C [ i ] < = = S + l)
S : = S + C[ij;
i: = i + l
кц
Е с л и з н а ч е н и е S не м е н ь ш е с у м м а р н о г о к о л и ч е с т в а
д е н е г п о к у п а т е л я , то п о к у п а т е л ь м о ж е т к у п и т ь т о в а р
л ю б о й д о с т у п н о й ему с т о и м о с т и , т о ч н о р а с с ч и т а в ш и с ь з а
п о к у п к у . И н а ч е — P==A -\-...
l -\-A _ .
N s
6. Е с л и S>Я,-}-... + # „ , то с у м м у в ы п л а т и т ь н е л ь з я .
Е с л и п о к у п а т е л ь о т д а с т в с е свои к у п ю р ы п р о д а в ц у ,
то п о н я т н о , что д л я р е ш е н и я исходной з а д а ч и н а д о
определить, может ли продавец вернуть сумму # ! + ... +
-\-Н -\-В -\~...
п 1 -\-В — S, и с п о л ь з у я л ю б ы е и м е ю щ и е с я т е
т
п е р ь у него к у п ю р ы М (его и п о к у п а т е л я ) . Д л я э т о г о
{
у д о б н о о т с о р т и р о в а т ь к у п ю р ы по их д о с т о и н с т в у в по
рядке неубывания.
214
П у с т ь P = M -j-M -{-...
{ 2 +М . п+т Р е ш и м более общую
з а д а ч у : н а й д е м все н е п р е д с т а в и м ы е д а н н ы м и к у п ю р а м и
с у м м ы на п р о м е ж у т к е от 0 до Р.
З а в е д е м м а с с и в А [0.. Р] н а т у р а л ь н ы х ч и с е л . Э л е м е н т
Д [ £ ] = 1 , е с л и м ы м о ж е м в ы п л а т и т ь с у м м у i (т. е. с у щ е
с т в у е т н а б о р к у п ю р с у м м а р н о г о д о с т о и н с т в а /), и А [/] =
= 0, если в ы п л а т и т ь не м о ж е м .
Б у д е м с т р о и т ь в с е в о з м о ж н ы е с у м м ы , и с п о л ь з у я по
с л е д о в а т е л ь н о 0, 1, 2, N купюр.
О ч е в и д н о , что с у м м а из н у л я к у п ю р — это н у л ь ,
поэтому с н а ч а л а Л [ 0 ] = 1 .
П р е д п о л о ж и м , что мы н а ш л и в с е в о з м о ж н ы е с у м м ы ,
к о т о р ы е м о ж н о с о с т а в и т ь , и с п о л ь з у я не б о л е е (к— 1) ку
пюры М, х Л^_!.
Д о б а в и м е щ е одну к у п ю р у М . к
Т е п е р ь мы м о ж е м в ы п л а т и т ь с л е д у ю щ и е с у м м ы :
1) все с у м м ы , к о т о р ы е м о ж н о б ы л о с о с т а в и т ь с по
мощью купюр М ь M _i,k
2) все с у м м ы , к о т о р ы е м о ж н о б ы л о с о с т а в и т ь с по
мощью купюр М, { M_
k u у в е л и ч е н н ы е на M .k
for i : = Р — M [ k ] d o w n t o 0 do
if A [ i ] = l
t h e n A [ i + M [ k ] ] : = l;
М ы п р о х о д и м по м а с с и в у из к о н ц а в н а ч а л о д л я того,
ч т о б ы не и с п о л ь з о в а т ь п о в т о р н о о б р а з о в а н н ы е на т е к у
щем шаге суммы.
После выполнения п + т шагов алгоритм заканчива
ет р а б о т у .
7. О ч е в и д н о е р е ш е н и е з а д а ч и состоит в и с п о л ь з о в а
нии п р о ц е д у р ы , к о т о р а я по з а д а н н ы м к о о р д и н а т а м (но
меру строки i и номеру столбца / ) элемента определяет
максимальное значение элементов, расположенных в
н у ж н о й ч а с т и м а т р и ц ы А.
215
О д н а к о н е т р у д н о з а м е т и т ь , что д л я э л е м е н т о в п е р
вого с т о л б ц а м а т р и ц ы В с п р а в е д л и в о соотношение
В [г, 1] = Л [г, 1], i = 1, . . . N. В ы ч и с л е н и е ж е д р у г и х с т о л б
цов м о ж н о п р о в о д и т ь с л е д у ю щ и м о б р а з о м :
П р и этом н е о б х о д и м о у ч и т ы в а т ь , что и н д е к с ы э л е
ментов д о л ж н ы находиться в пределах границ массива.
8. Д л я р е ш е н и я п у н к т а а ) з а д а ч и д о с т а т о ч н о вос
п о л ь з о в а т ь с я т е м ф а к т о м , что д л я о п р е д е л е н и я м и н и
мальной величины ш т р а ф а , взимаемого за проход
в к л е т к у 1-Й с т р о к и , д о с т а т о ч н о з н а т ь м и н и м а л ь н ы е
в е л и ч и н ы ш т р а ф а , в з и м а е м о г о з а п р о х о д в к л е т к и (г —
— 1 )-ri с т р о к и , к о т о р ы е я в л я ю т с я с о с е д н и м и р а с с м а т р и
ваемой клетке. Поэтому алгоритм решения пункта
а) следующий:
нц д л я i от 1 д о п
Ш т р а ф [i, l ] : = A [ i , 1]
кц
кц д л я i от 2 до п
п ц д л я j от 1 до m
Ш т р а ф [i, j j : = Ш т р а ф j ] - f A [i, j];
если j > l и Ш т р а ф [i, Л < Ш т р а ф [ i — 1 , j — 1 ] + A [i, j]
I то Ш т р а ф [i, j ] : = Ш т р а ф [ i - 1 , j - l ] + A [ i , j ] ;
все
е с л и j < m и Ш т р а ф [i, j ] < Ш т р а ф [i — 1, j +
+ A[i, j |
I то Ш т р а ф [i, Л : = Ш т р а ф [ 1 - 1 , j + l] + A [ i , j];
все
кц
кц
9. а ) О б о з н а ч и м в е р ш и н ы JV-угольника х , 0
в п о р я д к е о б х о д а по к о н т у р у . В д а л ь н е й ш е м
б у д е м с ч и т а т ь , что е с л и в в ы к л а д к а х в с т р е ч а -
216
е т с я в е р ш и н а с и н д е к с о м к, то это то ж е , что
и в е р ш и н а с и н д е к с о м к m o d N ( о с т а т о к от
д е л е н и я к на N).
Р а с с м о т р и м в ы п у к л ы й L - у г о л ь н и к , в е р ш и н а м и кото
рого я в л я ю т с я L последовательных вершин данного
Af-угольника, н а ч и н а я с х и з а к а н ч и в а я x _
р в порядке
p+L ]
о б х о д а по к о н т у р у . У этого / . - у г о л ь н и к а ( L > 1 ) б у д е м
с ч и т а т ь , что о т р е з о к [х ; x _ ]—р p+L его д и а г о н а л ь .
1
т. е. о д н а из сторон к а к о г о - т о т р е у г о л ь н и к а . И т а к , мы
зафиксировали две вершины треугольника — х и х .р р+к
при i — p-\- 1, р + 2, k— 1.
Н а х о д и м S(p, p + k) д л я к а ж д о г о р — 0, N—\.
217
М и н и м у м S (р, p-f-ЛГ — 2 ) д л я р = 0, N— 1 и д а с т
и с к о м у ю т р и а н г у л я ц и ю . Д е й с т в и т е л ь н о , S(p, p-\-N — 2)
есть стоимость р а з б и в к и фигуры после проведения N — 3
диагоналей.
б) Алгоритм аналогичен алгоритму д л я случая а),
только вместо ф о р м у л ы (2) надо использовать
следующую:
[х , x ]р с ч и т а е т с я д и а г о н а л ь ю ) . М ы б е р е м мини
p+k
м у м по в с е м в о з м о ж н ы м р а з б и в к а м ф и г у р ы , а сто
и м о с т ь р а з б и в к и о п р е д е л я е т с я к а к м а к с и м у м из
д л и н ы д и а г о н а л и d(p, p-\-k) и длин максималь
н ы х д и а г о н а л е й S (р, i) и S (/, k).
10. Д л я х = а , а и у= Ь т b , a и b — символы,
ь n t t
ls^i^m, d(x, у) м о ж н о в ы ч и с л и т ь , п р и м е н я я
метод динамического программирования.
О п р е д е л и м м а с с и в d[0..m, 0..п], э л е м е н т ы к о т о р о г о
в т о р о м у э л е м е н т у — о п е р а ц и я в с т а в к и с и м в о л а bj в ко
н е ц с т р о к и b ...b _ l j п о л у ч е н н о й з а d[i, / — 1 ] о п е р а ц и й
u
из с т р о к и а , . . . а ; т р е т ь е м у — к о н т е к с т н а я з а м е н а я,- на bj,
;
з а м е н а о с у щ е с т в л я е т с я в с л у ч а е а фЬ^ (тогда Р , = 1 )
{ 7
218
и не п р о и с х о д и т п р и с о в п а д е н и и а, и b r Величина
d [т, п] с о о т в е т с т в у е т м и н и м а л ь н о м у к о л и ч е с т в у о п е р а
ций, которые требуются д л я п р е о б р а з о в а н и й строки
х в с т р о к у у. А л г о р и т м м о ж е т б ы т ь з а п и с а н т а к :
for i : = 1 to m do
d[i, 0 ] : = i ;
for j : = 1 t o n do
d[0, j ] : = j ;
for i : = 1 t o m do
for j : = 1 to n d o
d [ i , j] = m i n ( d [ i - l , j ] + l , d [ i , j - l ] + l , d[i—1,
j-i]+Pij);
11. П у с т ь с т р о к а x с о с т о и т из ц и ф р 0 и 1 и и м е е т
д л и н у N, а с т р о к а у ( и з с и м в о л о в Л и В) — д л и н у М.
З а в е д е м м а т р и ц у А р а з м е р а NXM, при этом строки
м а т р и ц ы п о м е ч а ю т с я г'-й ц и ф р о й с т р о к и х, а с т о л б е ц —
/ - м с и м в о л о м с т р о к и у.
Возьмем в качестве примера # = «00110», у —
= «ААААВВАА».
П е р в а я цифра строки х (цифра 0) может быть пре
о б р а з о в а н а в о д н у из п о с л е д о в а т е л ь н о с т е й б у к в «А»,
«АА», «ААА», «АААА», являющихся префиксами строки
у. З а н о с и м с и м в о л «*» в т е с т о л б ц ы п е р в о й с т р о к и ,
буквы-пометки которых соответствуют последним бук
вам возможных последовательностей.
Т а к и м о б р а з о м , п о м е ч а ю т с я э л е м е н т ы А [1, 1], А [ 1 , 2],
Л [ 1 , 3] и Л [ 1 , 4].
Н а к а ж д о м следующем шаге алгоритма будем пре
о б р а з о в ы в а т ь о ч е р е д н у ю i-ю ц и ф р у с т р о к и х, к о т о р о й
с о о т в е т с т в у е т i-я с т р о к а м а т р и ц ы Л .
Н а х о д и м «*» в п р е д ы д у щ е й с т р о к е п р и п р о с м о т р е ее
слева н а п р а в о (этому столбцу соответствует последняя
б у к в а в к а к о й - т о из н е п у с т ы х п о с л е д о в а т е л ь н о с т е й б у к в ,
п о р о ж д е н н ы х на п р е д ы д у щ е м ш а г е ) . Е с л и т е к у щ у ю ц и ф
ру можно п р е о б р а з о в а т ь в последовательность букв,
219
п о м е ч а ю щ и х с л е д у ю щ и е за н а й д е н н ы м с т о л б ц ы , то
в э т и х с т о л б ц а х в р а с с м а т р и в а е м о й с т р о к е с т а в и м «*».
Д а л е е от м е с т а н а д п о с л е д н е й п о м е ч е н н о й я ч е й к о й
и щ е м в п р е д ы д у щ е й с т р о к е «*» и, к о г д а н а х о д и м , повто
ряем указанные выше операции.
Э т и д е й с т в и я п р о в о д и м д а л е е д л я i = 2, N.
В и д м а т р и ц ы после N ш а г о в :
А Л Л А В В А А
0 * * * *
0 * * *
1 * * * *
1 "t* *s*
0 * *
Е с л и п о с л е N ш а г о в в п о з и ц и и (N, М) стоит х, то
строки можно преобразовать друг в друга.
З а м е ч а н и е . Можно обойтись и одномерным массивом. В самом
деле, при заполнении следующей строки мы обращаемся только к эле
ментам предыдущей строки, к каждому — по одному разу.
220
н ц д л я i от 1 до s в ы п о л н я т ь
I F[i, i ] : = 0 ;
кц
н ц д л я р ОТ 1 ДО S — 1 в ы п о л н я т ь
нц д л я i от 1 д о s — р в ы п о л н я т ь
Kol: =бесконечность;
j : = i + p;
н ц д л я к от i до j — 1 в ы п о л н я т ь
е с л и K o l > F [ i , k] + F [ k + l , j] + n [ i ] * n [ k +
+ l]*m[j]
I то K o l : = F | i , k] + F [ k + 1, j] + n [i]*n [ k + l ] . m [jj;
все
кц
F[i, j ] : = K o l ;
КЦ
КЦ
В я ч е й к е F[l, s] п о с л е з а в е р ш е н и я р а б о т ы а л г о р и т м а
будет находиться искомое минимальное число операций.
Подумайте, каким образом можно в произведении
матриц Л|, A р а с с т а в и т ь с к о б к и т а к , ч т о б ы они
s
221
П р е д п о л о ж и м , что п р и г е н е р а ц и и п о д п о с л е д о в а т е л ь
ностей м ы н а ш л и ^ - э л е м е н т н у ю с т р о г о в о з р а с т а ю щ у ю
подпоследовательность. В дальнейшем имеет смысл рас
с м а т р и в а т ь т о л ь к о п о д п о с л е д о в а т е л ь н о с т и , с о с т о я щ и е из
б о л е е чем k э л е м е н т о в ( п о д у м а й т е п о ч е м у ) .
Р а с с м о т р и м исходную «-элементную последователь
ность. Е с л и она не я в л я е т с я и с к о м о й , то б у д е м г е н е р и р о
в а т ь (N—1)-элементные подпоследовательности. Если
и с р е д и них не н а й д е н о р е ш е н и е , то б у д е м р а с с м а т р и в а т ь
п о д п о с л е д о в а т е л ь н о с т и из (JV— 2) э л е м е н т о в и т. д.
В худшем случае (каком?) придется анализировать
п о р я д к а 2" в а р и а н т о в .
Д л я б о л е е б ы с т р о г о р е ш е н и я этой з а д а ч и м о ж н о
п р и м е н и т ь д и х о т о м и ю по k — к о л и ч е с т в у э л е м е н т о в
в подпоследовательности (как?).
Р а с с м о т р и м д р у г о е , б о л е е э ф ф е к т и в н о е р е ш е н и е этой
з а д а ч и . З а в е д е м м а с с и в ы А, В и С д л и н ы N: м а с с и в
A[l..N] и с п о л ь з у е т с я д л я х р а н е н и я ч и с е л исходной по
с л е д о в а т е л ь н о с т и ; э л е м е н т ВЩ — з н а ч е н и е д л и н ы м а к
с и м а л ь н о й в о з р а с т а ю щ е й п о д п о с л е д о в а т е л ь н о с т и , по
следний элемент которой A в е л и ч и н а С [i] е с т ь и н д е к с
э л е м е н т а , п р е д ш е с т в у ю щ е г о э л е м е н т у A [i] в этой м а к с и
м а л ь н о й п о д п о с л е д о в а т е л ь н о с т и ( Л [ / ] = 0, е с л и п р е д ш е
с т в у ю щ е г о э л е м е н т а нет).
Е с л и N = 1, то А [1] и е с т ь и с к о м а я п о д п о с л е д о в а т е л ь
ность. П р и этом В [ 1 ] = 1 , С [ 1 ] = 0. П р е д п о л о ж и м , что мы
з а п о л н и л и м а с с и в ы В и С от н а ч а л а и д о э л е м е н т а
П о п ы т а е м с я п о л у ч и т ь э л е м е н т ы В [i] и C[i]. Д л я
э т о г о б у д е м п р о с м а т р и в а т ь м а с с и в Л от 1 д о (i—1)-го
э л е м е н т а и и с к а т ь т а к о й и н д е к с к, д л я к о т о р о г о о д н о в р е
менно выполняются следующие условия:
1) A[k]<A[i],
2) В [k] м а к с и м а л ь н о .
О ч е в и д н о , что м а к с и м а л ь н у ю по д л и н е п о д п о с л е д о в а
т е л ь н о с т ь , з а к а н ч и в а ю щ у ю с я э л е м е н т о м Л [г], м о ж н о по
лучить, приписав этот элемент к максимальной подпос-
222
л е д о в а т е л ь н о с т и с п о с л е д н и м э л е м е н т о м А [к]. С л е д о в а
т е л ь н о , В [i] = B\k]+ 1 и C[i] = k.
П у с т ь мы о б р а б о т а л и в с е N э л е м е н т о в м а с с и в а
А и н а ш л и м а к с и м а л ь н ы й э л е м е н т м а с с и в а В. П у с т ь э т о
э л е м е н т с и н д е к с о м IndexMax. П о построению это длина
максимальной подпоследовательности.
Получить искомую подпоследовательность можно
следующим образом. Пусть / — индекс текущего эле
мента подпоследовательности, распечатываемой с конца.
С н а ч а л а п о л а г а е м j : = IndexMax и печатаем элемент
А [/], к о т о р ы й я в л я е т с я п о с л е д н и м . П р е д ш е с т в у ю щ и й
е м у в п о с л е д о в а т е л ь н о с т и э л е м е н т и м е е т и н д е к с С [/],
поэтому индекс следующего с конца элемента определя
ется к а к / : = С [ / ] . О п и с а н н ы е действия повторяем пока
/ н е с т а н е т р а в н ы м 0 (т. е. п о к а не д о й д е м д о н а ч а л а
последовательности).
З а п и с ь а л г о р и т м а на я з ы к е P a s c a l :
for i : = 2 t o N do B [ i ] : = 0 ;
C [ 1 ] : = 0 ; B [ l ] : = l; M a x : = l; I n d e x M a x : = 1;
for i: = 2 t o N do
for k : = 1 to i — 1 d o
if ( A [ k ] < A [ i ] ) a n d ( B [ i ] < B [ k ] + l ) t h e n
begin
C[i]:=k;
B[i]:=B[k]+l;
if B [ i ] > M a x t h e n
begin
Max:=B[i]
IndexMax: — \
end;
end;
j : = IndexMax;
w h i l e j <C > 0 do
begin
w r i t e l n (A [j]);
J:=C[j]
end;
223
В п р о г р а м м е п е р е м е н н а я Мах и с п о л ь з у е т с я д л я х р а
нения д л и н ы т е к у щ е й м а к с и м а л ь н о й п о д п о с л е д о в а т е л ь
ности.
В этой з а д а ч е э л е м е н т м а с с и в а С [г] с о д е р ж и т с с ы л к у
на э л е м е н т , п р е д ш е с т в у ю щ и й А [г] в п о д п о с л е д о в а т е л ь н о
сти м а к с и м а л ь н о й д л и н ы . Т а к а я с с ы л о ч н а я с т р у к т у р а
д а н н ы х н а з ы в а е т с я однонаправленным с п и с к о м . Е с л и
у э л е м е н т а е с т ь с с ы л к а к а к на п р е д ы д у щ и й , т а к и на
п о с л е д у ю щ и й э л е м е н т , то с п и с о к — двунаправленный
(его м о ж н о р е а л и з о в а т ь , е с л и и с п о л ь з о в а т ь не один
массив ссылок, а два).
В рассмотренной задаче оптимальные значения хра
н я т с я в м а с с и в е В.
П о л у ч и т ь б о л е е э ф ф е к т и в н о е р е ш е н и е м о ж н о , е с л и на
к а ж д о м ш а г е х р а н и т ь не все п о л у ч е н н ы е р а н е е о п т и
мальные значения и соответствующие подпоследователь
ности, а т о л ь к о н а и б о л е е п е р с п е к т и в н ы е из них.
П у с т ь Л' (L, i) о б о з н а ч а е т м н о ж е с т в о в о з р а с т а ю щ и х
п о д п о с л е д о в а т е л ь н о с т е й д л и н ы L, к о т о р ы е с о с т а в л е н ы из
э л е м е н т о в с н о м е р а м и от 1 д о / — 1 . И з д в у х п о д п о с л е д о
вательностей длины L более перспективной будет та,
у которой величина последнего элемента меньше, т а к
к а к ее м о ж е т п р о д о л ж и т ь б о л ь ш е е ч и с л о э л е м е н т о в .
П у с т ь SP (L, i) — с а м а я п е р с п е к т и в н а я п о д п о с л е д о в а
т е л ь н о с т ь д л и н ы L (с м и н и м а л ь н ы м по в е л и ч и н е п о с л е д
ним э л е м е н т о м ) , a S(i) — м н о ж е с т в о всех п о д п о с л е д о в а
т е л ь н о с т е й SP(L, i) при в с е в о з м о ж н ы х L. В S (г) с о д е р
ж и т с я не б о л е е i— 1 п о д п о с л е д о в а т е л ь н о с т е й (с д л и н а м и
1 *— 1>-
П у с т ь мы з н а е м S (/). Д л я того ч т о б ы о п р е д е л и т ь ,
к а к и е п о д п о с л е д о в а т е л ь н о с т и м о ж е т п р о д о л ж а т ь г'-й э л е
м е н т п о с л е д о в а т е л ь н о с т и А, д о с т а т о ч н о з н а т ь п о с л е д н и е
элементы перспективных подпоследовательностей длины
1, 2, N,. и н д е к с ы к о т о р ы х б у д у т х р а н и т ь с я в м а с с и
в е Ind.
Последний элемент перспективной подпоследователь
ности д л и н ы р с т р о г о м е н ь ш е п о с л е д н е г о э л е м е н т а п е р с -
224
п е к т и в н о й п о д п о с л е д о в а т е л ь н о с т и д л и н ы р-4-l (объясни
те почему). Поэтому г'-й э л е м е н т должен продолжить
подпоследовательность максимальной длины, последний
э л е м е н т к о т о р о й м е н ь ш е г'-го э л е м е н т а .
Учитывая упорядоченность последних элементов пер
спективных подпоследовательностей, поиск можно сде
л а т ь методом половинного деления (дихотомией), исполь
зуя массив Ind.
П р и п р и с о е д и н е н и и i-ro э л е м е н т а к т а к о й п о д п о с л е д о
вательности длины р ее длина увеличивается на 1,
а п о с л е д н и м э л е м е н т о м с т а н о в и т с я А [г]. П р и э т о м мно
ж е с т в о S (г-4- 1 ) с о в п а д а е т с S (г), з а и с к л ю ч е н и е м под
последовательности SP(p~\-l, г ' + 1 ) . полученной добав
л е н и е м г'-го э л е м е н т а к п о д п о с л е д о в а т е л ь н о с т и SP (р, г).
При хранении подпоследовательности для каждого эле
мента удобно хранить номер предшествующего ему эле
мента.
б) Д л я каждого индекса i найдем подпоследова
т е л ь н о с т ь м а к с и м а л ь н о й д л и н ы с р а з р ы в о м в А [г].
Б у д е м и с к а т ь м а к с и м а л ь н у ю по д л и н е п о д п о с л е д о
вательность, заканчивающуюся в элементе А [г],
и м а к с и м а л ь н у ю по д л и н е подпоследовательность,
н а ч и н а ю щ у ю с я в нем ( д л я э т о г о б у д е м п р о с м а т р и
в а т ь м а с с и в А не с л е в а н а п р а в о , а с п р а в а н а л е в о ) .
в) З а в е д е м м а с с и в С [ 0 . . г а + 1 , I..N]. В нем i-я с т р о к а
будет хранить информацию о последовательностях
с i—1 разрывом (нулевая строка — фиктивная);
/-й э л е м е н т в этой с т р о к е есть д л и н а с а м о й д л и н н о й
подпоследовательности элементов «хвоста» масси
ва А (от / - г о э л е м е н т а до га-го), начинающейся
в / - й п о з и ц и и и и м е ю щ е й не б о л е е i—1 разрывов.
Алгоритм:
1. З а п о л н и т ь н у л е в у ю с т р о к у н у л я м и ( ч т о б ы можно
б ы л о з а п о л н и т ь п е р в у ю с т р о к у по о б щ е м у алгоритму).
2. Д л я каждой с т р о к и г от 1 до гаг+1 выполнить
следующие действия:
226
н а я по д л и н е п о д п о с л е д о в а т е л ь н о с т ь с не б о л е е чем
I — 1 р а з р ы в о м , н а ч и н а ю щ а я с я с Л [/']. В т о р о й э л е м е н т
( о б о з н а ч и м его A [k]) этой м а к с и м а л ь н о й п о д п о с л е д о в а
т е л ь н о с т и ( е с л и он, конечно, е с т ь ) м о ж е т б ы т ь :
1 ) б о л ь ш е Л [у]; т о г д а н а х о д и м е г о с р е д и э л е м е н т о в ,
обладающих следующими свойствами:
а) & > / ;
б ) C[i, k] м а к с и м а л ь н ы й (т. е. мы п р и с о е д и н я е м
к Л [у] м а к с и м а л ь н у ю по д л и н е п о д п о с л е д о в а т е л ь
н о с т ь с не б о л е е ч е м i—1 разрывом, фор
м и р у я п о д п о с л е д о в а т е л ь н о с т ь о п я т ь не б о л е е чем
с i— 1 р а з р ы в о м ) ;
2 ) м е н ь ш е или р а в н ы й Л [у]; т о г д а и щ е м его с р е д и
элементов, обладающих следующими свойствами:
а) k>j;
б ) C[i—1, k] м а к с и м а л ь н ы й (т. е. п р и с о е д и н я е м
м а к с и м а л ь н у ю п о д п о с л е д о в а т е л ь н о с т ь с не б о л е е
чем i — 2 р а з р ы в а м и , ф о р м и р у я п о д п о с л е д о в а т е л ь
н о с т ь с не б о л е е чем i — 1 р а з р ы в о м ) .
Полученная подпоследовательность имеет макси
мальную длину, так как длина подпоследовательности,
к о т о р а я н а ч и н а е т с я с Л [к], — м а к с и м а л ь н а . У п о м и н а в
ш и е с я в ы ш е и н д е к с ы row и col, к о т о р ы е з а п о м и н а ю т с я
в X[i, у] и Y[i, у] с о о т в е т с т в е н н о , о б о з н а ч а ю т с л е д у ю щ е е :
col — и н д е к с с л е д у ю щ е г о з а Л [у] э л е м е н т а в м а к с и
м а л ь н о й по д л и н е п о д п о с л е д о в а т е л ь н о с т и , начинаю
щ е й с я в п о з и ц и и у и и м е ю щ е й не б о л е е i—1 р а з р ы в о в ;
row — 1 — м а к с и м а л ь н о е к о л и ч е с т в о р а з р ы в о в в п о д п о с
л е д о в а т е л ь н о с т и , н а ч и н а ю щ е й с я в Л [col].
14. Д л я р е ш е н и я з а д а ч и э л е м е н т ы м а с с и в а у д о б н о
у п о р я д о ч и т ь по а б с о л ю т н о й в е л и ч и н е ( в п о р я д к е н е у б ы
в а н и я ) . Е с л и в м а с с и в е е с т ь э л е м е н т ы , р а в н ы е 0, то один
из них и б у д е т п о с л е д н и м э л е м е н т о м и с к о м о й п о с л е д о в а
т е л ь н о с т и , п о э т о м у их м о ж н о и г н о р и р о в а т ь . П у с т ь /С,
обозначает максимальное количество элементов, которое
м о ж е т н а х о д и т ь с я в некоторой п о с л е д о в а т е л ь н о с т и с т р е -
227
буемым свойством, последним элементом которой я в л я
е т с я г'-й э л е м е н т .
П о н я т н о , что н а и м е н ь ш е м у по а б с о л ю т н о й в е л и ч и н е
э л е м е н т у не м о ж е т п р е д ш е с т в о в а т ь ни один э л е м е н т ,
п о э т о м у К = 0, где р— и н д е к с п е р в о г о н е н у л е в о г о э л е
р
мента.
Д л я каждого следующего элемента с номером /,
/ = p-f-l, N, н е о б х о д и м о о п р е д е л и т ь м а к с и м а л ь н о е
количество элементов, которое может предшествовать
р а с с м а т р и в а е м о м у э л е м е н т у , с учетом т р е б у е м о г о с в о й
с т в а . П о н я т н о , что это к о л и ч е с т в о е с т ь м а к с и м у м из
величин К , К ,Р{ Р2 К , где э л е м е н т ы с н о м е р а м и р
р и р, 2
р,
т p^Pi-zCpz^.... <p <j mявляются делителями
элемента с номером /. Поэтому мы имеем рекуррентную
ф о р м у л у д л я в ы ч и с л е н и я /С : ;
K, = max(K , Pl К,
Р2 К )+\.
рт
З н а ч е н и е K , в ы ч и с л е н н о е по о п и с а н н о м у в ы ш е п р а
N
котором д о с т и г а е т с я м а к с и м у м д л я чисел К , К,
р Р2
э л е м е н т р а в е н е д и н и ц е , а все о с т а л ь н ы е — д е л и т е л и
ч и с л а а, не м е н ь ш и е Ь, з а п и с а н н ы е в п о р я д к е в о з р а с т а
н и я . И з у т в е р ж д е н и я с л е д у е т , что р^.а-\-2.
Б у д е м и с к а т ь м и н и м а л ь н у ю по д л и н е п о д п о с л е д о в а
т е л ь н о с т ь э л е м е н т о в м а с с и в а S, к о т о р а я н а ч и н а е т с я е д и
н и ц е й , з а к а н ч и в а е т с я а, к а ж д ы й э л е м е н т которой д е
л и т с я на п р е д ы д у щ и й , п р и ч е м ч а с т н о е п р и н а д л е ж и т
м н о ж е с т в у L.
В с л у ч а е , если а, Ь, с, хЩ— ц е л ы е , в м а с с и в S п о м е
щ а е м в п о р я д к е в о з р а с т а н и я м о д у л я все д е л и т е л и ч и с л а
а, н а ч и н а я с м и н и м а л ь н о г о э л е м е н т а в L. Д а л е е —
аналогично.
17. З а д а ч у м о ж н о п е р е ф о р м у л и р о в а т ь с л е д у ю щ и м
образом.
П о с л е д о в а т е л ь н о с т ь из п в а г о н о в , з а н у м е р о в а н н ы х от
1 д о и, н е о б х о д и м о р а з б и т ь на не б о л е е чем т п о д п о с л е
д о в а т е л ь н о с т е й , в к а ж д о й из к о т о р ы х н о м е р а в а г о н о в
возрастают.
О д н и м из с а м ы х п р о с т ы х а л г о р и т м о в с о р т и р о в к и
в а г о н о в я в л я е т с я а л г о р и т м , о с н о в ы в а ю щ и й с я на с л е д у ю
щем правиле.
229
1) П о м е щ а е м о ч е р е д н о й в а г о н ( н о м е р к о т о р о г о k)
на п у т ь с м и н и м а л ь н о в о з м о ж н ы м н о м е р о м , при
у с л о в и и , что п о с л е д н и й в а г о н , с т о я щ и й на этом
п у т и , имеет н о м е р м е н ь ш е k.
2 ) Е с л и все в а г о н ы с о с т а в а б у д у т т а к и м о б р а з о м
р а с п о л о ж е н ы на с т а н ц и и , то, о ч е в и д н о , что вагон
№ 1 на к а к о м - т о пути б у д е т с а м ы м п р а в ы м и его
м о ж н о п о д а т ь на в ы х о д . З а т е м в а г о н № 2 т а к ж е
м о ж е т б ы т ь п о д а н на в ы х о д , т а к к а к не м о ж е т
с т о я т ь на пути з а в а г о н о м с н о м е р о м , б о л ь ш и м 2,
и т. д.
3) Е с л и ж е к а к о й - т о в а г о н н е л ь з я п о м е с т и т ь ни на
один путь на с т а н ц и и , то это з н а ч и т , что все пути
«перекрыты» вагонами с большими номерами,
п р и ч е м п о с л е д н и е в а г о н ы на этих п у т я х р а с п о л о
жены в порядке убывания. Вместе с последним
в а г о н о м , не н а ш е д ш и м с е б е м е с т а , эти т. в а г о н о в
в исходной п о с л е д о в а т е л ь н о с т и с о с т а в л я ю т у б ы в а
ющую подпоследовательность длины т-\-\.
О т м е т и м , что если м о ж н о о т с о р т и р о в а т ь п о с л е д о в а
т е л ь н о с т ь в а г о н о в , то м о ж н о о т с о р т и р о в а т ь т а к ж е и л ю
б у ю их п о д п о с л е д о в а т е л ь н о с т ь , и н а о б о р о т . П о э т о м у из
существования убывающей подпоследовательности дли
ны т + 1 с л е д у е т , что и с х о д н у ю п о с л е д о в а т е л ь н о с т ь от
сортировать нельзя.
18. М о ж н о , конечно, ч и с л о А у м н о ж и т ь с а м о на с е б я
п—1 р а з , но д л я этого н а д о в ы п о л н и т ь п — 1 о п е р а ц и ю
у м н о ж е н и я . Р а с с м о т р и м метод, требующий меньшего
ч и с л а у м н о ж е н и й (он, о д н а к о , не в с е г д а д а е т мини
мальное число умножений).
Е с л и п — четное (п = 2т), то б у д е м в ы ч и с л я т ь А",
используя тождество
n
A = (A f,
m
е с л и ж е я = 2 т + 1 , то A = n
(A f-A.
m
Т а к и м о б р а з о м , в о з в е д е н и е А в 13-ю с т е п е н ь б у д е т
выглядеть следующим образом:
A = (A f-A=((A ff-A=((A-A-A
]3 6 3
ff • А,
и вычисление требует 5 операций умножения.
230
П р и м е ч а н и е . Используя данный метод, для возведения числа
в степень п потребуется порядка logy2 операций умножения.
Программа на я з ы к е P a s c a l может выглядеть так:
v a r A, N : i n t e g e r ;
function power ( N : i n t e g e r ) : integer;
begin
if N > 1 t h e n
if o d d ( N ) t n e n {N нечетно?}
p o w e r : = S Q R ( p o w e r (N div 2)) * A
e l s e p o w e r : = S Q R ( p o w e r (N div 2))
else p o w e r : = A
end;
begin
r e a d (A, N);
writeln (power (N));
end;
М о ж н о ту ж е с а м у ю идею р е а л и з о в а т ь и п о - д р у г о м у
( д а л е е мы п р и в о д и м в ы д е р ж к у из к н и г и Д . К н у т а « И с
к у с с т в о п р о г р а м м и р о в а н и я д л я Э В М » , т. 2, с. 482):
« З а п и ш е м п в двоичной системе счисления и з а м е н и м
в этой з а п и с и к а ж д у ю ц и ф р у 1 п а р о й б у к в SX, а к а ж д у ю
ц и ф р у 0 — б у к в о й S, п о с л е чего в ы ч е р к н е м к р а й н ю ю
л е в у ю п а р у б у к в SX. Р е з у л ь т а т , ч и т а е м ы й с л е в а н а п р а
во, п р е в р а щ а е т с я в п р а в и л о в ы ч и с л е н и я х", е с л и б у к в у
S интерпретировать как операцию возведения в квадрат,
а б у к в у X — к а к о п е р а ц и ю у м н о ж е н и я на х.
Н а п р и м е р , е с л и п = 2 3 , то его д в о и ч н ы м п р е д с т а в л е
н и е м б у д е т 10111; с т р о и м п о с л е д о в а т е л ь н о с т ь SX S SX
SX SX, у д а л я е м из нее н а ч а л ь н у ю п а р у SX и в итоге
п о л у ч а е м с л е д у ю щ е е п р а в и л о в ы ч и с л е н и я : S SX SX SX.
С о г л а с н о э т о м у п р а в и л у , мы д о л ж н ы « в о з в е с т и х в к в а д
р а т , з а т е м с н о в а в о з в е с т и в к в а д р а т , з а т е м у м н о ж и т ь на
х, в о з в е с т и в к в а д р а т , у м н о ж и т ь на х, в о з в е с т и в к в а д р а т
и, н а к о н е ц , у м н о ж и т ь на х»; при э т о м м ы п о с л е д о в а т е л ь -
9 4 5 10 11 22 91
но в ы ч и с л я е м лг, х , х , х , х , х , х .
Э т о т « б и н а р н ы й метод» л е г к о о б о с н о в а т ь , р а с с м о т р е в
п о с л е д о в а т е л ь н о с т ь п о л у ч а е м ы х в ходе в ы ч и с л е н и я п о к а -
231
з а т е л е й : если S и н т е п р е т и р о в а т ь к а к о п е р а ц и ю у м н о ж е
ния на 2, а X — к а к о п е р а ц и ю п р и б а в л е н и я 1 и если
н а ч а т ь с 1, а не с х, то н а ш е п р а в и л о д а е т н а м в со
о т в е т с т в и и со с в о й с т в а м и д в о и ч н о й с и с т е м ы с ч и с л е н и я
число л».
П р и в е д е н н ы й м е т о д не д а е т м и н и м а л ь н о г о ч и с л а
2г
о п е р а ц и й у м н о ж е н и я . Д л я в ы ч и с л е н и я х н а м , по и з л о
ж е н н о м у в ы ш е методу, п о т р е б у е т с я 7 о п е р а ц и й у м н о ж е
ния. В д е й с т в и т е л ь н о с т и , их н е о б х о д и м о т о л ь к о 6:
Y . v 2 3 5 j.10 20 23
JV * Л * JV Л* ' Л * JV * JV *
232
В случае, если то, о ч е в и д н о ,
A[i, f\ = max{A[i—\, /], A[i, / ' — 1 ] , A[i—\, /—1]},
но т а к к а к в с е г д а A[i—1, / — 1 ] < 1 Л [/, / — 1], то
А [г, j] = max{A[i—\, j], A[i, j—l]}.
В е л и ч и н а A [m, n] и д а е т д л и н у м а к с и м а л ь н о й о б щ е й
подпоследовательности. Найдем саму подпоследователь
н о с т ь . П у с т ь А [т, n] = d. Д в и г а я с ь по п о с л е д н е й с т р о к е
с п р а в а н а л е в о , и щ е м с а м ы й л е в ы й э л е м е н т в этой с т р о к е
со з н а ч е н и е м d. Д в и г а е м с я от него в в е р х по с т о л б ц у
в поиске элемента столбца с минимальным первым
и н д е к с о м и з н а ч е н и е м d. П у с т ь это А [г, / ] . Т о г д а э л е м е н т
A[i— 1, / — 1 ] р а в е н d— 1, a x и y — это п о с л е д н и е
t t
о б щ и е с о в п а д а ю щ и е э л е м е н т ы в х и у.
Н а ч и н а я от э л е м е н т а A [i—1, / — 1 ] , п о в т о р я е м , к а к
б ы л о о п и с а н о в ы ш е , д в и ж е н и е в л е в о и в в е р х по м а т р и ц е ,
находим предпоследний совпадающий элемент в х и у и
т. д .
Программа:
for i : = 0 t o m do A [i, 0 ] : = 0 ;
for j : = 0 t o n do A [ 0 , j ] : = 0 ;
for i : = 1 t o m do
for j : = 1 to n do
if x [ i ] = y [i] t h e n
A [ i , j ] : = A [ i - l , j — 114- I
e l s e A [ i , j ] : = m a x ( A [ i — 1 , j], A [ i , j — l]);
w r i t e l n ( ' Д л и н а п о с л е д о в а т е л ь н о с т и = ', A [m, n]);
d : = A [ m , n]; i : = m ; j : = n ;
w h i l e ( d < > 0 ) do
begin
w h i l e A [ i , j — 1 ] = d do j : = j — 1;
w h i l e A [ i — 1 , j ] = d do i : = i — 1;
write ('Элемент последовательности номер', d,
' е с т ь ' , x[i]);
i : = i — 1; j : = j — 1; d : = d — 1; {переход к п о и с к у
предшествую-}
{щего э л е м е н т а в п о с л е д о в а т е л ь н о с т и }
end;
233
2 1 . В п о с л е д о в а т е л ь н о с т я х х и у и з б а в л я е м с я от
н е з н а ч а щ и х н у л е й . Е с л и х о т ь о д н а из п о с л е д о в а т е л ь н о
стей с т а л а пустой, то 2 = 0. Е с л и п о с л е д о в а т е л ь н о с т и не
п у с т ы е , т о к р а й н и е л е в ы е ц и ф р ы и в х, и в у р а в н ы
1. Д л я п о л у ч е н н ы х п о с л е д о в а т е л ь н о с т е й и с п о л ь з у е м а л
г о р и т м з а д а ч и 2 0 ( д л я п о л у ч е н и я м а к с и м а л ь н о г о z не
о б х о д и м о , чтобы с т а р ш а я ц и ф р а z б ы л а 1 и д в о и ч н а я
з а п и с ь г и м е л а м а к с и м а л ь н у ю д л и н у ) , но при этом д л я
к а ж д о г о А [/", / ] — д л и н ы п о с л е д о в а т е л ь н о с т и , необходи
мо х р а н и т ь д о б а в о ч н о и с а м у п о с л е д о в а т е л ь н о с т ь ; п р и
п р и с в о е н и и з н а ч е н и я A [i, / ] о д н о в р е м е н н о б у д е м з а п о м и
нать и последовательность максимальной длины. Если
т а к и х н е с к о л ь к о , то б е р е м из них п о с л е д о в а т е л ь н о с т ь
с максимальным значением. Поэтому алгоритм задачи
20 з а п и ш е т с я с л е д у ю щ и м о б р а з о м .
П у с т ь S [0.. т, 0.. п] — м а с с и в с т р о к . В S [г, /'] б у д е т
х р а н и т ь с я п о д п о с л е д о в а т е л ь н о с т ь , д л и н а к о т о р о й A [i, /].
for i : = 0 t o m do A [ i , 0 ] : = 0 ;
for j : = 0 to n do A [ j , 0 ] : = 0 ;
for i : = 0 to m do
for j : = 0 to n do
S[i, ] ] : = " ;
for i : = 1 to m do
for j : = 1 to n do
begin
if x [i] = y [j] t h e n
begin
A[i; j ] : = A [ i - l , j - l ] + l ;
S[i, j ] : = S [ i - l , j - l ] + x[i];
end;
A[i, j ] : = m a x ( A [ i , j], A [ i - 1 , j], A[i, j — 1 ] ) ;
S [ i , j ] : = m a x ( S [ i , j ] , S [ i - 1 , j ] , S [i, j - 1 ] ) ;
end;
w r i t e (A [m, n|, ' — д л и н а ' , S [m, n]);
Глава 5 . ЗАДАЧИ КОМБИНАТОРИКИ
С з а д а ч а м и , в к о т о р ы х п р и х о д и т с я в ы б и р а т ь те и л и
и н ы е п р е д м е т ы , р а с п о л а г а т ь их в о п р е д е л е н н о м п о р я д к е
и отыскивать среди всевозможных расположений наи
лучшее, люди сталкиваются постоянно. Н а п р и м е р , на
ч а л ь н и к цеха р а с п р е д е л я е т н е с к о л ь к о в и д о в р а б о т м е ж
ду имеющимися станками, агроном р а з м е щ а е т посевы
с е л ь с к о х о з я й с т в е н н ы х к у л ь т у р на н е с к о л ь к и х п о л я х , з а
вуч ш к о л ы с о с т а в л я е т р а с п и с а н и е у р о к о в . П р и р е ш е н и и
т а к о г о в и д а з а д а ч в о з н и к л и п о н я т и я об у п о р я д о ч е н и и
и группировании объектов. С этими понятиями и работа
ет н а у к а к о м б и н а т о р и к а .
Комбинаторика — это о б л а с т ь м а т е м а т и к и , в к о т о р о й
изучаются вопросы о том, сколько различных комбина
ц и й , п о д ч и н е н н ы х тем или и н ы м у с л о в и я м , м о ж н о с о с т а
в и т ь из з а д а н н ы х о б ъ е к т о в .
Иногда количество вариантов, которые надо проана
л и з и р о в а т ь п р и р е ш е н и и к о м б и н а т о р н о й з а д а ч и , очень
велико. В этом случае единственной возможностью полу
ч е н и я р е з у л ь т а т а з а д о п у с т и м о е в р е м я , а не ч е р е з с т о л е
тия, является использование компьютера.
К а к и л ю б а я д р у г а я н а у к а , к о м б и н а т о р и к а име
ет с в о ю т е р м и н о л о г и ю . О с н о в н ы м п о н я т и е м к о м б и н а т о
р и к и я в л я е т с я комбинаторный объект, и л и соединение.
П р и в ы б о р е m э л е м е н т о в из п р а з л и ч н ы х э л е м е н т о в
п р и н я т о г о в о р и т ь , что они о б р а з у ю т с о е д и н е н и е из п э л е
м е н т о в по пг.
В з а в и с и м о с т и от того, и м е е т л и з н а ч е н и е п о р я д о к
э л е м е н т о в в с о е д и н е н и и или нет, а т а к ж е от того, в х о д я т
в с о е д и н е н и е все п э л е м е н т о в или т о л ь к о ч а с т ь их, р а з л и
ч а ю т т р и в и д а с о е д и н е н и й . Это — перестановки, разме
щения и сочетания.
235
§ 1. С О Е Д И Н Е Н И Я
1.1. Перестановки
С о е д и н е н и я , к а ж д о е из к о т о р ы х с о д е р ж и т л р а з л и ч
ных э л е м е н т о в , в з я т ы х в о п р е д е л е н н о м п о р я д к е , н а з ы в а
ю т с я перестановками из п э л е м е н т о в . С л е д у е т о т м е т и т ь ,
что п о р я д о к э л е м е н т о в в п е р е с т а н о в к е с у щ е с т в е н е н
и в образовании перестановки участвуют все п элементов
( т = л).
П р и м е р . В ы п и ш е м все п е р е с т а н о в к и из э л е м е н т о в
а, Ь, с:
К о л и ч е с т в о всех с п о с о б о в , к о т о р ы м и м о ж н о п е р е с т а
в и т ь п р а з л и ч н ы х п р е д м е т о в , р а с п о л о ж е н н ы х на л р а з
личных местах, принято обозначать Р (читается «число п
п е р е с т а н о в о к из п»).
Н а й д е м Р . Н а п е р в о е из и м е ю щ и х с я п м е с т п р е д м е т
п
м о ж е т б ы т ь в ы б р а н п с п о с о б а м и , на в т о р о е м е с т о — (п —
— 1) с п о с о б о м , на т р е т ь е место — ( « — 2) с п о с о б а м и
и т. д. Н а п р е д п о с л е д н е е м е с т о п р е д м е т в ы б и р а е т с я из
двух оставшихся, а для последнего места выбор предме
та единственен. О б щ е е количество способов будет равно
п р о и з в е д е н и ю п(п—1)(л — 2 ) - . . . - 2 - 1 . Такое произведе
ние н а з ы в а е т с я факториалом ч и с л а п и о б о з н а ч а е т с я л!
Т а к и м о б р а з о м , Р = п\п
П р и м е р . С к о л ь к о всего ш е с т и з н а ч н ы х ч е т н ы х чи
с е л м о ж н о с о с т а в и т ь из ц и ф р 1, 3 , 4, 5, 7 и 9, е с л и в к а ж
д о м из э т и х чисел ни о д н а ц и ф р а не п о в т о р я е т с я ?
П о с л е д н я я ц и ф р а четного ч и с л а д о л ж н а б ы т ь четной,
поэтому в данном случае последней цифрой числа может
б ы т ь т о л ь к о ц и ф р а 4. О с т а в ш и е с я п я т ь ц и ф р могут
с т о я т ь на о с т а в ш и х с я п я т и м е с т а х в л ю б о м п о р я д к е .
П о э т о м у к о л и ч е с т в о с п о с о б о в их р а с с т а н о в к и р а в н о Р —
ь
= 5! = 120.
И н о г д а т р е б у е т с я не п р о с т о п о д с ч и т а т ь к о л и ч е с т в о
п е р е с т а н о в о к из л э л е м е н т о в , но и н а й т и к а ж д у ю из них.
236
С у щ е с т в у е т н е с к о л ь к о а л г о р и т м о в г е н е р а ц и и всех
п е р е с т а н о в о к из я э л е м е н т о в . О н и р а з л и ч а ю т с я п о р я д
ком п о л у ч е н и я п е р е с т а н о в о к .
Р а с с м о т р и м один из х о р о ш о и з в е с т н ы х а л г о р и т м о в ,
в процессе исполнения которого перестановки п чисел
р а с п о л а г а ю т с я лексикографически (в словарном поряд
ке). Это з н а ч и т , что п е р е с т а н о в к и с р а в н и в а ю т с я с л е в а
н а п р а в о п о э л е м е н т н о и б о л ь ш е й из них я в л я е т с я т а ,
у которой р а н ь ш е встретился элемент, больший соответ
с т в у ю щ е г о е м у э л е м е н т а во в т о р о й п е р е с т а н о в к е . ( Н а
п р и м е р , е с л и S = ( 3 , 5, 4, 6, 7), a Ь = (3, 5, 6, 4, 7), то
S < L , так как S < L . ) 3 3
О п и ш е м а л г о р и т м д л я л = 5, отчего р а с с у ж д е н и я не
утратят общности. В дальнейшем, для удобства, будем
р а б о т а т ь не с с а м и м и э л е м е н т а м и , а с их н о м е р а м и (от
1 до л).
П р и н ц и п р а б о т ы а л г о р и т м а р а з ъ я с н и м на п р и м е р е .
Допустим, необходимо воспроизвести все перестановки
ч и с е л 1, 2, 3 , 4, 5. П е р в о й п е р е с т а н о в к о й с ч и т а е м п е р е
с т а н о в к у ( 1 , 2, 3, 4, 5). П о с л е д н е й п е р е с т а н о в к о й б у д е т
( 5 , 4, 3, 2, 1). Э л е м е н т ы п е р е с т а н о в к и б у д е м х р а н и т ь
в массиве.
П р е д п о л о ж и м , что на н е к о т о р о м ш а г е р а б о т ы а л г о
р и т м а п о л у ч е н а п е р е с т а н о в к а Р:
Р = ( 3 , 4, 5, 2, 1) = ( р , , Pi, р , г р,
4 р ).
5
Д л я того ч т о б ы о п р е д е л и т ь н е п о с р е д с т в е н н о с л е д у ю
щ у ю з а ней п е р е с т а н о в к у , н е о б х о д и м о в ы п о л н и т ь ш а г и :
Ш а г 1. Б у д е м п р о с м а т р и в а т ь д а н н у ю п е р е с т а н о в к у
с п р а в а налево и следить за тем, чтобы к а ж д ы й следую
щий элемент перестановки (элемент массива с большим
н о м е р о м ) б ы л б о л ь ш е п р е д ы д у щ е г о (т. е. э л е м е н т а м а с
сива с меньшим номером), и остановимся сразу же, к а к
т о л ь к о это п р а в и л о н а р у ш и т с я ( 1 < 2 < 5 , а 5 > 4 ) . М е с т о
остановки указано подчеркиванием:
(3, 4, 5, 2, 1).
Ш а г 2. З а т е м в н о в ь п р о с м а т р и в а е м п р о й д е н н ы й п у т ь
237
( с п р а в а н а л е в о ) до тех п о р , п о к а не д о й д е м д о п е р в о г о
ч и с л а , которое у ж е б о л ь ш е о т м е ч е н н о г о . М е с т о второй
остановки отмечено двойным подчеркиванием.
( 3 , 4, 5, 2, 1).
( 3 , 5, 4, 2, 1).
Ш а г 4. В ч а с т и м а с с и в а , р а с п о л о ж е н н о й с п р а в а от
д в о й н о г о п о д ч е р к и в а н и я , о т с о р т и р у е м все ч и с л а в п о р я д
к е в о з р а с т а н и я . Т а к к а к д о сих п о р они б ы л и у п о р я д о ч е
ны по у б ы в а н и ю , то это л е г к о с д е л а т ь , з а п и с а в в о б р а т
ном п о р я д к е у к а з а н н у ю ч а с т ь м а с с и в а . П о л у ч и м новую
п е р е с т а н о в к у , к о т о р у ю о б о з н а ч и м Q — (q q , q , q , q ):
b 2 3 4 5
Q = ( 3 , 5, 1, 2, 4 ) .
Это и е с т ь т а п е р е с т а н о в к а , к о т о р а я н е п о с р е д с т в е н н о
следует за Я в лексикографическом порядке.
q >p .
2 Поэтому для г верно одно из двух равенств: г = р или r — q .
2 2 2 2 2 2
нц д л я i от 0 до п
|p[i]:=i :инициализация массива Р
238
кц
нц пока р [0] = 0
нц для i от 1 д о п
|pli]:=p[i] : вывод очередной п е р е с т а
н о в к и на экран
кц
j:=N
:поиск (справа налево)
:элемента,
: большего предшествую-
нц пока p [ j — l ] > p [ j ]
:щего ему ( Ш А Г 1)
(5.1)
:поиск числа, большего
кц
:отмеченного ( Ш А Г 2)
k:=N
нц пока p [ j — l ] > p [ k ] :перестановка двух чисел,
I k:=k-l : найденных выше ( Ш А Г 3 )
кц
d:=p[j-l] : з а п и с ь части массива в
p[j-l]:=p[k] •.обратном порядке
p[k]:=d :во вспомогательный мас
сив г
нц для i от j д о n
:перенос элементов из мас-
I r [ i ] : = p [ N —(1 — j ) ] :сива г
:в исходный массив
кц : ( Ш А Г 4)
нц для i от j до n
|p[i]:=r[i]
кц
'кц Вопросы для повторения
1. Ч т о т а к о е п е р е с т а н о в к и ?
2. Ч е м у р а в н о ч и с л о п е р е с т а н о в о к и з 4 э л е м е н т о в ? из
6 элементов?
3. Как с г е н е р и р о в а т ь все перестановки из 4 э л е м е н т о в в л е к с и
кографическом порядке?
4. Укажите перестановку, лексикографически с л е д у ю щ у ю за
(5, 4, 6, 2, 1, 3).
239
1.2. Сочетания
С о е д и н е н и я , о т л и ч а ю щ и е с я д р у г от д р у г а , по к р а й н е й
м е р е , о д н и м э л е м е н т о м , к а ж д о е из к о т о р ы х с о д е р ж и т
т э л е м е н т о в , в з я т ы х из п р а з л и ч н ы х э л е м е н т о в , н а з ы в а
ю т с я сочетаниями ( к о м б и н а ц и я м и или в ы б о р к а м и ) из
п элементов по т. П о р я д о к с л е д о в а н и я э л е м е н т о в не
учитывается.
П р и м е р . В ы п и ш е м все с о ч е т а н и я из э л е м е н т о в а, Ь,
с по д в а :
ab, ас, be.
С(п, т) = — . (1)
т\ ( я — т ) !
П р и м е р . С к о л ь к и м и с п о с о б а м и м о ж н о из 10 чело
век в ы б р а т ь к о м а н д у д л я и г р ы в г о р о д к и ? К о м а н д а
с о с т о и т из 4 ч е л о в е к .
К о л и ч е с т в о , с п о с о б о в р а в н о ч и с л у с о ч е т а н и й из 10
по 4.
С (10, 4 ) = — i L ^ £ 2 ° 210.
4! ( 1 0 4 ) ! 1234
Д л я р е ш е н и я н е к о т о р ы х з а д а ч т р е б у е т с я не т о л ь к о
п о д с ч и т а т ь ч и с л о с о ч е т а н и й , но и н а й т и к а ж д о е из них.
П р и в е д е м а л г о р и т м г е н е р а ц и и всех с о ч е т а н и й из п э л е
м е н т о в по т. Т а к ж е , к а к и в а л г о р и т м е г е н е р а ц и и
п е р е с т а н о в о к , б у д е м р а б о т а т ь не с с а м и м и э л е м е н т а м и ,
а с их н о м е р а м и 1, 2, п.
240
Т а к к а к п о р я д о к э л е м е н т о в в с о ч е т а н и и не у ч и т ы в а
е т с я , то п о л у ч а т ь с о ч е т а н и я у д о б н о в п о р я д к е в о з р а с т а
н и я и н д е к с о в и с п о л ь з у е м ы х на д а н н о м ш а г е э л е м е н т о в
( о б щ е е их ч и с л о есть т). Т е к у щ е е с о ч е т а н и е б у д е м
х р а н и т ь в м а с с и в е В. В к а ч е с т в е н а ч а л ь н о й к о н ф и г у р а
ции в о з ь м е м с л е д у ю щ у ю : ( 1 , 2, т), д л я к о т о р о й
В [/] = / , / = 1 , т. С о ч е т а н и я б у д е м п о л у ч а т ь в в о з р а
с т а ю щ е м лексикографическом порядке, поэтому послед
ним с о ч е т а н и е м б у д е т (п — т-f-1, п — т-\-2, п — 1, п).
Д л я каждого элемента последнего сочетания выполня
е т с я у с л о в и е B[j] = n — m-j-j. Д л я всех о с т а л ь н ы х соче
т а н и й это р а в е н с т в о б у д е т н а р у ш е н о хотя бы д л я одного
элемента.
Д л я генерации очередного сочетания найдем элемент
В [/] с м а к с и м а л ь н ы м и н д е к с о м /, т а к о й , что в ы п о л н я е т с я
неравенство
В [/]<« — tn + j . (*)
П р и этом б у д е м п р о с м а т р и в а т ь т е к у щ е е с о ч е т а н и е
с п р а в а н а л е в о . З а т е м у в е л и ч и м э т о В [/] на 1, а д л я всех
k<Zj п о л а г а е м В [k] = B (k—- l ) - f - 1 . Е с л и т а к о г о В [/'] не
с у щ е с т в у е т , то г е н е р а ц и я с о ч е т а н и й д л и н ы т з а к о н ч е н а .
нц д л я L от I до m
| B[i]:=i инициализация массива
нц
j : —100;
нц п о к а j < > 0
| н ц д л я i от 1 д о m
B[i]:=B[iJ : в ы в о д о ч е р е д н о г о полу-
кц :ченного сочетания
j:=m (5.2)
нцпокаП>0)и(В[Л; = п + j —• m ) : поиск э л е м е н
т а , удовлетво
р я ю щ е г о усло-
: в и ю (*)
1. Ч т о н а з ы в а е т с я с о ч е т а н и е м и з п э л е м е н т о в п о ml
2 . Ч е м у р а в н о ч и с л о с о ч е т а н и й и з 5 по 3? и з 6 п о 2?
3. Как с г е н е р и р о в а т ь все сочетания из 5 э л е м е н т о в по 2?
4. К а к о е с о ч е т а н и е б у д е т п о л у ч е н о алгоритмом (5.2) вслед
з а (3, 5, 8), е с л и п = 8, т — Ъ1
1.3*. Размещения
С о е д и н е н и я , о т л и ч а ю щ и е с я д р у г от д р у г а с о с т а в о м
э л е м е н т о в или их п о р я д к о м , к а ж д о е из к о т о р ы х с о д е р
ж и т т(т<Сп) э л е м е н т о в , в з я т ы х из п р а з л и ч н ы х э л е
м е н т о в , н а з ы в а ю т с я размещениями из п элементов по т.
П р и м е р . В ы п и ш е м все р а з м е щ е н и я из э л е м е н т о в а,
Ь, с по д в а :
242
Н а п е р в о е м е с т о м о ж н о п о м е с т и т ь л ю б о й из л п р е д
метов, на в т о р о е м е с т о — л ю б о й п р е д м е т из (га — 1) о с т а в
ш и х с я , на т р е т ь е — один из (л — 2 ) о с т а в ш и х с я и т. д . Н а
п р е д п о с л е д н е е место с н о м е р о м ( о т — 1 ) — л ю б о й из
о с т а в ш и х с я л — (т — 2) п р е д м е т о в , а на п о с л е д н е е от-е
м е с т о — один из л — ( о т — 1 ) . П о л у ч а е м
Л ( л , от) = л ( л — 1 ) ( л — 2 ) . . . ( л — (от — 2)){п — (от — 1)) =
(п — т)\'
П о о п р е д е л е н и ю , 0! = 1.
П р и м е р . Сколько всего семизначных телефонных
н о м е р о в , в к а ж д о м из к о т о р ы х ни о д н а ц и ф р а не п о в т о
ряется?
Э т а з а д а ч а о в ы б о р е и р а з м е щ е н и и по с е м и р а з л и ч
н ы м м е с т а м с е м и из д е с я т и р а з л и ч н ы х ц и ф р , п о э т о м у
число у к а з а н н ы х телефонных номеров равно
А (10, 7 ) = 1 0 - 9 - 8 - 7 . 6 - 5 - 4 = 6 0 4 8 0 0 .
А т е п е р ь д о к а ж е м ф о р м у л у (1) п. 1.2 д л я ч и с л а
сочетаний.
В ы б р а т ь от из л р а з л и ч н ы х предметов можно
С ( л , от) с п о с о б а м и , и в к а ж д о м из в ы б р а н н ы х с о ч е т а н и й
и м е е т с я от! в о з м о ж н о с т е й у п о р я д о ч и т ь от п р е д м е т о в э т о
го с о ч е т а н и я . П о э т о м у и м е е т с я от! С (л, от) в о з м о ж н о с т е й
в ы б р а т ь и р а з м е с т и т ь по от р а з н ы м м е с т а м т из п р а з
н ы х п р е д м е т о в , т. е.
Л (л, от) = от!С(л, от).
О т с ю д а с л е д у е т , что ч и с л о с о ч е т а н и й из л р а з л и ч н ы х
п р е д м е т о в по от в от! р а з м е н ь ш е , чем ч и с л а р а з м е щ е н и й
из л по от, т. е.
„ . . А («, т) п\
С (л, от) = :—- = .
т\ т\(п-т)\
В том с л у ч а е , если т р е б у е т с я с г е н е р и р о в а т ь все р а з
м е щ е н и я из л по от, то д л я к а ж д о г о с о ч е т а н и я , п о л у ч е н
ного а л г о р и т м о м (5.2), п р и м е н я ю т а л г о р и т м г е н е р а ц и и
п е р е с т а н о в о к (5.1). ( Э т о т а л г о р и т м р а з р а б о т а й т е с а м о
стоятельно.)
243
Вопросы для повторения
1. Ч т о н а з ы в а е т с я р а з м е щ е н и я м и и з п э л е м е н т о в по ml
2. Ч е м у р а в н о ч и с л о р а з м е щ е н и й и з 5 п о 3? и з 6 п о 21
3. Как с г е н е р и р о в а т ь в с е р а з м е щ е н и я и з 5 э л е м е н т о в по 21
§ 2*. С О Е Д И Н Е Н И Я С ПОВТОРЕНИЯМИ
2.1. Р а з м е щ е н и я с п о в т о р е н и я м и
Д о сих пор р а с с м а т р и в а л и с ь с о е д и н е н и я , в к а ж д о е из
к о т о р ы х л ю б о й из п р а з л и ч н ы х э л е м е н т о в входит один
раз. М о ж н о рассматривать соединения с повторениями,
т. е. с о е д и н е н и я , в к а ж д о м из к о т о р ы х л ю б о й из п р а з
л и ч н ы х э л е м е н т о в м о ж е т в х о д и т ь б о л е е одного р а з а .
Р а з м е щ е н и я из п э л е м е н т о в , в к а ж д о е из к о т о р ы х
входит т э л е м е н т о в , п р и ч е м один и тот ж е э л е м е н т
может повторяться в к а ж д о м размещении любое число
р а з , но не б о л е е чем т, н а з ы в а ю т с я размещениями из
п элементов по m с повторениями.
П р и м е р . В ы п и ш е м р а з м е щ е н и я с п о в т о р е н и я м и из
д в у х э л е м е н т о в а, Ь по т р и :
К о л и ч е с т в о р а з м е щ е н и й из n э л е м е н т о в no m с повто
р е н и я м и о б о з н а ч а ю т А™ (п). С п р а в е д л и в а ф о р м у л а
А:(п) = п.м
Д е й с т в и т е л ь н о , на к а ж д о е из пг мест мы м о ж е м
п о м е с т и т ь л ю б о й из п э л е м е н т о в .
П р и м е р . К а ж д ы й т е л е ф о н н ы й н о м е р состоит из
7 цифр. Сколько всего телефонных номеров, с о д е р ж а щ и х
т о л ь к о ц и ф р ы 2, 3, 5, 7?
Э т а з а д а ч а о ч и с л е р а з м е щ е н и й в семи п о з и ц и я х семи
ц и ф р , к а ж д а я из к о т о р ы х м о ж е т б ы т ь 2, 3, 5 или 7. Ц и ф
ры в телефонном номере могут повторяться.
Ч и с л о всех у к а з а н н ы х н о м е р о в есть А (4) = 4 = 7
4
7
= 16 384.
244
О п и ш е м а л г о р и т м г е н е р а ц и и всех р а з м е щ е н и й из
п э л е м е н т о в по т с п о в т о р е н и я м и . П р о н у м е р у е м э л е м е н т ы
от 0 до ( я — 1) и в д а л ь н е й ш е м б у д е м р а б о т а т ь не с с а м и
ми э л е м е н т а м и , а с их н о м е р а м и . К а ж д о м у р а з м е щ е н и ю
мы можем сопоставить число в я-ичной системе счисле
н и я , с о с т о я щ е е из т ц и ф р . И н а о б о р о т , к а ж д о м у из
т а к и х чисел с о о т в е т с т в у е т о д н о - е д и н с т в е н н о е р а з м е щ е
н и е . М и н и м а л ь н ы м из т а к и х чисел б у д е т ч и с л о , с о с т о я
щ е е из т н у л е й . Д л я п о л у ч е н и я всех ч и с е л , с о о т в е т с т в у
ю щ и х р а з м е щ е н и я м , б у д е м к а ж д ы й р а з п р и б а в л я т ь по
1 к т е к у щ е м у числу, п о к а не п о л у ч и м ч и с л о из 1 и т ну
л е й . Д а н н о е ч и с л о не с о о т в е т с т в у е т ни одному из и с к о
м ы х р а з м е щ е н и й , а я в л я е т с я у к а з а т е л е м того, что гене
р а ц и я з а к о н ч е н а ( п р е д ы д у щ и м ч и с л о м б ы л о ч и с л о , со
с т о я щ е е из т ц и ф р , к а ж д а я из к о т о р ы х р а в н я л а с ь я — 1).
Приведем фрагмент программы, генерирующей разме
щения с повторениями.
н ц д л я i от 0 д о m
| A [i]: = 0 н а ч а л ь н о е ч и с л о , с о с т о я щ е е из
:всех нулей
кц
нц п о к а А [п11 = О
i:=0
А [0]: = А [ 0 ] + 1 п р и б а в л е н и е 1 к младшему
:разряду
нц пока ( A [ i j = n ) и ( A [ m ] = 0)
A[i] = 0
A[i+1]: = A[i+1]+1 :перенос 1 в следующий
:разряд
i:=i+l (5.3)
кц
нц д л я i от т — 1 до 0 ш а г — 1
| A [ i ] : = A |i] :вывод очередного размещения с
:повторениями
кц
кц
245
2.2. П е р е с т а н о в к и с п о в т о р е н и я м и
П е р е с т а н о в к и из п п р е д м е т о в , в к а ж д у ю из кото
рых входят п одинаковых предметов одного типа, п
х 2
о д и н а к о в ы х п р е д м е т о в д р у г о г о т и п а и т. д . д о п оди к
Ч и с л о всех т а к и х п е р е с т а н о в о к с п о в т о р е н и я м и п р и
н я т о о б о з н а ч а т ь Р {п
п п,
ь n ). О н о м о ж е т б ы т ь н а й д е
2 k
но по ф о р м у л е
В о з ь м е м н е к о т о р у ю п е р е с т а н о в к у из ч и с л а Р (п п, п ь 2
а з а т е м все в о з м о ж н ы е п е р е с т а н о в к и э л е м е н т о в &-го
т и п а , с ч и т а я их р а з н ы м и , м о ж н о о с у щ е с т в и т ь n \ спосо k
б а м и . О с у щ е с т в л я я все в о з м о ж н ы е п е р е с т а н о в к и т о л ь к о
э л е м е н т о в к а ж д о г о т и п а , п о л у ч и м n \n \...n \ переста
l 2 k
новок, к о т о р ы е б ы в о з н и к л и из в з я т о й п е р е с т а н о в к и
с п о в т о р е н и я м и , если бы и м е л а с ь в о з м о ж н о с т ь к а к - т о
р а з л и ч а т ь в х о д я щ и е в к а ж д ы й тип о д и н а к о в ы е э л е м е н
т ы . П р о д е л а в это д л я к а ж д о й п е р е с т а н о в к и с п о в т о р е н и
я м и , п о л у ч и м п\ — ч и с л о в с е в о з м о ж н ы х п е р е с т а н о в о к из
п различных предметов.
Т а к и м о б р а з о м , п \п \...n \
х Р (п , п ,
2 п ) — п\, отку
k п х 2 к
246
Д л я п о л у ч е н и я всех п е р е с т а н о в о к с п о в т о р е н и я м и
м о ж н о в о с п о л ь з о в а т ь с я а л г о р и т м о м (5.1), з а м е н и в в н е м
з н а к и > на > = . ( П о ч е м у ? )
2.3. С о ч е т а н и я с п о в т о р е н и я м и
Ч и с л о всех с о ч е т а н и й из п э л е м е н т о в по m с п о в т о р е
н и я м и п р и н я т о о б о з н а ч а т ь С" (п). О н о м о ж е т б ы т ь н а й
д е н о по ф о р м у л е :
C?(«)= ( ,
", ""\i'=Cg
/ + B _,. (4)
ш\(п— 1)!
Д л я д о к а з а т е л ь с т в а этой ф о р м у л ы з а к о д и р у е м к а ж
дое сочетание с повторением с помощью нулей и единиц.
С н а ч а л а напишем столько единиц, сколько взято эле
ментов первого типа. Потом, чтобы отделить элементы
п е р в о г о т и п а от э л е м е н т о в в т о р о г о т и п а , з а п и ш е м н у л ь ,
а з а т е м — столько единиц, сколько взято элементов вто
р о г о т и п а . Д а л е е с н о в а н а п и ш е м н у л ь ( е с л и не б ы л о
в з я т о ни о д н о г о э л е м е н т а в т о р о г о т и п а , но в з а п и с и
появятся два следующих друг за другом нуля). Д а
лее напишем столько единиц, сколько взято элементов
т р е т ь е г о т и п а , с н о в а н а п и ш е м н у л ь и т. д., п о к а не б у д у т
в ы п и с а н ы е д и н и ц ы , с о о т в е т с т в у ю щ и е э л е м е н т а м л-го
типа.
Д л я с о ч е т а н и я ааа из п р и в е д е н н о г о в ы ш е п р и м е р а
з а п и с ь б у д е т 1110, а д л я abb— 1011.
Т а к и м о б р а з о м , ч и с л о р а з л и ч н ы х с о ч е т а н и й из п э л е -
247
м е н т о в по т с п о в т о р е н и я м и р а в н о числу п е р е с т а н о в о к
с п о в т о р е н и я м и , к о т о р ы е м о ж н о с о с т а в и т ь из т е д и н и ц
и (п—1) нулей. Д л я вычисления количества перестано
вок с п о в т о р е н и я м и п р и м е н и м ф о р м у л у (3). О б щ е е коли
чество нулей и единиц равно
Р -Лт,
п+Я п - \ ) = { т
+ п
-^=С:'(п).
т\ (я — 1)!
Пример. В кондитерском магазине продавались
четыре сорта пирожных. Сколькими способами можно
купить семь пирожных?
Э т а з а д а ч а о ч и с л е с о ч е т а н и й из 4 э л е м е н т о в по
7 с повторениями:
С1(я) = т ^ = 1 2 0 .
Д о к а з а т е л ь с т в о ф о р м у л ы (4) д а е т а л г о р и т м г е н е р а
ции всех с о ч е т а н и й из п э л е м е н т о в по т с п о в т о р е н и я м и .
Д л я э т о г о п р и м е н и м а л г о р и т м (5.2) д л я г е н е р а ц и и соче
т а н и й из т-\-п— 1 э л е м е н т а по п— 1 (или по т, что одно
и то ж е , см. ф о р м у л у (2)).
В м а с с и в е В ( с м . а л г о р и т м (5.2)) х р а н я т с я в п о р я д к е
в о з р а с т а н и я и н д е к с ы и с п о л ь з у е м ы х на д а н н о м ш а г е
элементов. Количество таких индексов в случае генера
ции с о ч е т а н и й из (т-\-п—1) э л е м е н т а по (п—1) есть
(п—1). К а ж д ы й из и н д е к с о в п о к а з ы в а е т п о з и ц и ю н у л я
в п е р е с т а н о в к е с п о в т о р е н и я м и , с о с т а в л е н н о й из т еди
н и ц и (п—1)нулей. К о л и ч е с т в о е д и н и ц м е ж д у соседни
ми н у л я м и ( а т а к ж е к о л и ч е с т в о е д и н и ц до п е р в о г о н у л я
и после последнего) дает количество элементов каждого
типа.
П р и м е р . П у с т ь на к а к о м - т о ш а г е г е н е р а ц и и д л я
я = 4, т — Ь(т-\-п— 1 = 8 , п— 1 = 3 ) в м а с с и в е В получен
с л е д у ю щ и й н а б о р и н д е к с о в : 1, 3, 6. Э т о т н а б о р д а е т
к о н ф и г у р а ц и ю 0 1 0 1 1 0 1 1 , т. е. э л е м е н т п е р в о г о т и п а
в д а н н у ю в ы б о р к у не входит, э л е м е н т в т о р о г о т и п а
входит 1 р а з , э л е м е н т т р е т ь е г о т и п а — 2 р а з а , э л е м е н т
четвертого типа — 2 раза.
248
Д л я г е н е р а ц и и с о ч е т а н и й с п о в т о р е н и я м и м о ж н о вос
пользоваться и алгоритмом генерации перестановок
с повторениями.
§ 3*. ПОДМНОЖЕСТВА
П у с т ь и м е е т с я некий н а б о р из п р а з л и ч н ы х э л е
ментов, о б л а д а ю щ и х н е к о т о р ы м о б щ и м с в о й с т в о м . Сово
к у п н о с т ь этих э л е м е н т о в н а з ы в а ю т множеством. Общее
свойство элементов множества обычно содержится в са
мом н а з в а н и и ( з а д а н и и ) к а ж д о г о м н о ж е с т в а . М н о ж е с т в а
обычно обозначают заглавными латинскими буквами.
П р и м е р ы множеств: множество цифр, множество
б у к в н е к о т о р о г о а л ф а в и т а , м н о ж е с т в о точек п л о с к о с т и ,
м н о ж е с т в о з в е з д во В с е л е н н о й .
Если к а ж д ы й элемент множества А является эле
ментом м н о ж е с т в а В, то м н о ж е с т в о А н а з ы в а е т с я под
множеством м н о ж е с т в а В. Л ю б а я с о в о к у п н о с т ь э л е м е н
т о в из д а н н о г о м н о ж е с т в а о б р а з у е т п о д м н о ж е с т в о д а н н о
го м н о ж е с т в а .
П о д м н о ж е с т в о , не с о д е р ж а щ е е ни одного э л е м е н т а ,
н а з ы в а ю т пустым. П у с т о е м н о ж е с т в о я в л я е т с я п о д м н о
жеством всякого множества.
Примеры.
1 ) М н о ж е с т в о всех п о л о ж и т е л ь н ы х четных чисел я в
л я е т с я п о д м н о ж е с т в о м м н о ж е с т в а всех н а т у р а л ь н ы х
чисел.
2) В ы п и ш е м все п о д м н о ж е с т в а м н о ж е с т в а , с о с т о я щ е
го из э л е м е н т о в а, Ь, с. К а ж д о е п о д м н о ж е с т в о б у д е м
з а к л ю ч а т ь в фигурные скобки (пустое подмножество
о б о з н а ч а ю т {}).
{}, {а}, {Ь}, {с}, {а, Ь}, {а, с}, {Ь, с}, {a, h, с).
К о л и ч е с т в о всех п о д м н о ж е с т в « - э л е м е н т н о г о м н о ж е
с т в а р а в н о 2 " ( 2 = 8).
3
П у с т ь з а д а н о м н о ж е с т в о из п э л е м е н т о в . П р о н у м е р у
ем э л е м е н т ы д а н н о г о м н о ж е с т в а от 0 до (п — 1). В д а л ь
н е й ш е м б у д е м р а б о т а т ь не с с а м и м и э л е м е н т а м и , а с их
номерами.
249
Д л я генерации подмножеств создадим массив В[0..п\
из ( n - f - l ) э л е м е н т а ( я - й э л е м е н т ф и к т и в н ы й и и с п о л ь з у
е т с я д л я о п р е д е л е н и я о к о н ч а н и я р а б о т ы ) . B[i] = 0, если
i-й э л е м е н т в п о д м н о ж е с т в о не входит, и B[i]=l, если
входит. Т а к и м о б р а з о м , п у с т о м у п о д м н о ж е с т в у б у д е т
с о о т в е т с т в о в а т ь н а б о р из я н у л е й , а я - э л е м е н т н о м у под
м н о ж е с т в у — н а б о р из я е д и н и ц . Тут я в н о з а м е т н а с в я з ь
представления подмножества с двоичным представлени
ем числа.
Б у д е м г е н е р и р о в а т ь ч и с л а от 0 д о 2 " — 1, н а х о д и т ь их
д в о и ч н о е п р е д с т а в л е н и е и ф о р м и р о в а т ь п о д м н о ж е с т в о из
э л е м е н т о в исходного м н о ж е с т в а с и н д е к с а м и , соответст
вующими единицам в этом представлении.
В н а ч а л е о п р е д е л и м В [/'] ---- 0 д л я всех i от 0 д о я , что
с о о т в е т с т в у е т пустому п о д м н о ж е с т в у . Б у д е м р а с с м а т р и
в а т ь м а с с и в В к а к з а п и с ь д в о и ч н о г о ч и с л а В [п]... В [0]
и м о д е л и р о в а т ь о п е р а ц и ю с л о ж е н и я этого ч и с л а с е д и н и
цей. П р и с л о ж е н и и б у д е м п р о с м а т р и в а т ь ч и с л о с п р а в а
н а л е в о , з а м е н я я е д и н и ц ы н у л я м и до тех п о р , п о к а не
н а й д е м н у л ь , в к о т о р ы й з а н е с е м 1. Г е н е р а ц и я п о д м н о
ж е с т в з а к а н ч и в а е т с я , к а к т о л ь к о В[п]=1 (предыдущая
к о н ф и г у р а ц и я б ы л а 1... 1 = 2 " — 1 ) .
2
П р и в е д е м ф р а г м е н т п р о г р а м м ы г е н е р а ц и и всех под
множеств:
нц п о к а В [п] = 0
i:=0
нц пока В [ i ] = l
B[i]:=0
i: = i + l
кц (5.4)
B[i]: = l
н ц д л я i от 0 до n — 1
| B[i]:=B[i]
кц
кц
250
§ 4. Р Е А Л И З А Ц И Я П Е Р Е Б О Р А В А Р И А Н Т О В .
СОКРАЩЕНИЕ ПЕРЕБОРА
251
З а д а ч а 1. Часы
ООО
ООО 4 5 6
V
ООО J
1
3
Рис. 31 Рис. 32
252
соседних п р е о б р а з о в а н и я в п о с л е д о в а т е л ь н о с т и м о ж н о
п о м е н я т ь м е с т а м и , при этом о к о н ч а т е л ь н ы й р е з у л ь т а т
п р и п о с л е д о в а т е л ь н о м в ы п о л н е н и и п р е о б р а з о в а н и й не
и з м е н и т с я . П р и этом к о л и ч е с т в о о д и н а к о в ы х п р е о б р а з о
ваний в оптимальной (наиболее короткой) последова
т е л ь н о с т и не п р е в о с х о д и т 3, т а к к а к п о с л е д о в а т е л ь н о е
п р и м е н е н и е 4 о д и н а к о в ы х п р е о б р а з о в а н и й п е р е в о д и т ци
ф е р б л а т ы в исходное с о с т о я н и е .
Т а к и м о б р а з о м , если р а с с м о т р е т ь все в о з м о ж н ы е
допустимые минимальные последовательности преобра
з о в а н и й , в к о т о р ы х к а ж д о е из п р е о б р а з о в а н и й м о ж е т
в ы п о л н я т ь с я от 0 до 3 р а з (т. е. р а с с м о т р е т ь все в о з м о ж
ные 9-разрядные числа в четверичной системе счисле
ния, когда к а ж д ы й р а з р я д о т р а ж а е т количество выпол
нений с о о т в е т с т в у ю щ е г о п р е о б р а з о в а н и я ) , то м о ж н о н а й
ти с р е д и них р е ш е н и е п о с т а в л е н н о й з а д а ч и . Это со
о т в е т с т в у е т г е н е р а ц и и всех р а з м е щ е н и й из 4 э л е м е н т о в
по 9 с п о в т о р е н и я м и . Ч и с л о т а к и х п о с л е д о в а т е л ь н о с т е й
равно 4 . 9
Номера преобразова
Номер ци
ний, влияющих на ци
ферблата
ферблат
1 1, 2, 4
2 1, 2, 3, 5
2, 3, 6
со
4 1, 4, 5, 7
5 1, 3, 5, 7, 9
6 3, 5, 6, 9
7 4, 7, 8
5, 7, 8, 9
со
9 6, 8, 9
253
И т а к , на ц и ф е р б л а т 1 в л и я ю т п р е о б р а з о в а н и я I,
2 и 4. П о п ы т а е м с я у с т а н о в и т ь его в конечное п о л о ж е н и е ,
в ы п о л н я я п о с л е д о в а т е л ь н о все в о з м о ж н ы е к о м б и н а ц и и
п р е о б р а з о в а н и й 1, 2 и 4. П р и этом л ю б о й п р о и з в о л ь н ы й
н а б о р к о м б и н а ц и й п р е о б р а з о в а н и й 1 и 2 (в к о л и ч е с т в е а,
и а , соответственно) однозначно определяет количество
2
ф и к с и р о в а н о д л я з а д а н н ы х з н а ч е н и й а и а . И з второй
{ 2
с т р о ч к и т а б л и ц ы в и д н о , что т е п е р ь д о с т а т о ч н о р а с с м о т
реть только всевозможные значения а (при уже фикси 3
р о в а н н ы х з н а ч е н и я х а и а ) , при этом з н а ч е н и е а б у д е т
{ 2 5
ф и к с и р о в а н о . И з с т р о ч к и 3 с л е д у е т , что а ф и к с и р о в а н о ,
6
из с т р о ч к и 4 — что ф и к с и р о в а н о а , из с т р о ч к и 5 — а , из
7 9
строчки 7 — а . 8
Т а к и м о б р а з о м , д о с т а т о ч н о о с у щ е с т в и т ь п е р е б о р по
возможным значениям а а и с , в ы ч и с л я я п р и этом
ь 2 4
з н а ч и т е л ь н о м е н ь ш е , чем 4 . 9
З а д а ч а 2. Р а з д е л наследства
Б а р о н е с с а фон Б и р л и н г х о ф е н о с т а в и л а п о с л е с е б я
двум дочерям л а р е ц с золотыми монетами. Ее завеща
ние г л а с и л о , что все з о л о т о п о л у ч и т с о с е д н и й м о н а с т ы р ь ,
е с л и д о ч е р я м не у д а с т с я р а з д е л и т ь с о д е р ж и м о е л а р ц а
на д в е р а в н ы е ч а с т и . Д о с т о и н с т в о к а ж д о й з о л о т о й моне
ты является целым числом.
П р и м е р . Если монеты в л а р ц е были достоинством
2, 10, 4, 3, 7, 4, то их м о ж н о р а з д е л и т ь м е ж д у н а с л е д н и
ц а м и с л е д у ю щ и м о б р а з о м : 10, 3, 2 и 7, 4, 4. Е с л и ж е
з о л о т ы е м о н е т ы б ы л и д о с т о и н с т в о м 1, 9, 7, 3, 8, то р а з д е л
н а с л е д с т в а н е в о з м о ж е н , и оно д о с т а н е т с я м о н а с т ы р ю .
П р о г р а м м а д о л ж н а вводить количество монет и их
достоинства а а , и 2 a . Результатом работы програм-
N
254
мы д о л ж н о быть сообщение: «раздел наследства невоз
м о ж е н » или « р а з д е л н а с л е д с т в а в о з м о ж е н » . В п о с л е д н е м
случае необходимо указать, монеты какого достоинства
п о л у ч и т к а ж д а я из н а с л е д н и ц .
О б о з н а ч и м с у м м у н о м и н а л о в всех монет ч е р е з 5 . Э т о
число д о л ж н о быть четным, иначе раздел невозможен.
Д л я решения данной задачи можно, например, при
м е н и т ь а л г о р и т м (5.4) д л я г е н е р а ц и и всех п о д м н о ж е с т в
м н о ж е с т в а монет и п о и с к а с р е д и э т и х п о д м н о ж е с т в
такого, стоимость которого р а в н а 5 / 2 . П о д стоимостью
подмножества будем понимать суммарную стоимость
н о м и н а л о в монет, в х о д я щ и х в д а н н о е п о д м н о ж е с т в о .
Количество подмножеств равно, как у ж е отмечалось, 2 . W
255
П у н к т ы 4 и 5 д о с т а т о ч н о п р о в е р и т ь т о л ь к о д л я моне
ты с м а к с и м а л ь н ы м н о м и н а л о м .
В массиве А будем хранить номиналы монет. В мас
с и в е st в я ч е й к а х с и н д е к с а м и от 1 до st[0] х р а н я т с я
н о м е р а в ы б р а н н ы х с е й ч а с монет ( в о т с о р т и р о в а н н о м
массиве). Монеты с этими номерами образуют подмно
ж е с т в о с т о и м о с т и s. В м а с с и в е rez п о м е с т и м т е м о н е т ы ,
к о т о р ы е п о л у ч и т о д н а из н а с л е д н и ц , т о г д а д р у г а я полу
чит о с т а в ш и е с я м о н е т ы .
Эти р а с с у ж д е н и я я в л я ю т с я основой с л е д у ю щ е г о а л г о
ритма:
summa: = 0
д л я i от 1 до п
нц :находим стоимость
| s u m m a : = s u m m a - f a [i] наследства
кц
o t v e t : = « H e T решения»
если mod ( s u m m a , 2 ) = 0
то
s u m m a : = div ( s u m m a , 2 )
д л я i от 1 до n — 1
д л я j от i + 1 До n
е с л и a [ i ] < a [j]
то :сортировка «пузырьком»
k:=a[i] :массива
a[i]:=a[j] :с исходными д а н н ы м и
a[j]:=k :в порядке убывания
все
кц
кц
st [0]: = 1 : к о л и ч е с т в о в ы б р а н н ы х с е й ч а с монет
st I I ] : = 1 :индекс монеты с максимальным
:номиналом
s:=a[l]
i:=st[l]+l : н о м е р о ч е р е д н о й д о б а в л я е м о й мо-
: неты
256
если a [ l ] > s u m m a
то
o t v e t : = « H e T решения»
st[l]: = 0 ' . п о л а г а е м s t [ l ] = 0 , чтобы п р о п у с т и т ь
:цикл «пока»
все
если а [1] = s u m m a
то
otvet:=«ecTb решение» (5.5)
rez[l]: = a[l]
все
пока ( s t [ l ] = l ) и (otvet = «HeT р е ш е н и я » )
нц
пока ( i < = n ) и ( o t v e t = « H e T р е ш е н и я » )
нц
s : = s + a[i] : п ы т а е м с я добавить монету к
гсумме
если s = s u m m a
то
otvet: = «ecTb решение»
x : = s t [0]
д л я j от 1 до х : найденное решение
нц :сохраняем в массиве
| r e z [ j ] : = a [st [j]] :rez
кц
r e z [ х + 1]: = a [i]
иначе
если s<Csumma
то : д о б а в л я е м очередную монету к
:уже выбранным
s t [ 0 ] : = st[0]-f- 1 у в е л и ч и в а е м количество
: в ы б р а н н ы х монет
х : = s t [0]
st[х]: = i :индекс выбранной монеты
заносим в массив
иначе : м о н е т а не п о д х о д и т
s : = s — a [i] :превышена summa
257
все
i : = i-f-l .'переходим к с л е д у ю щ е й м о н е т е
все
кц
: е с л и р е ш е н и е не н а й д е н о , то в о з в р а щ а е м с я на
:шаг назад,
:т. е. в ы б р а с ы в а е м последнюю д о б а в л е н н у ю монету
x:=st[0] :удаление последней
i : = st [х] -f 1 :добавленной
s : = s — a [st [х]] : м о н е т ы из в ы б р а н н ы х
st [ 0 ] : = х - 1
кц
все
Р а с с м о т р и м р а б о т у д а н н о г о а л г о р и т м а на п р и в е д е н
ном в ы ш е п р и м е р е . П о с л е с о р т и р о в к и м а с с и в а и м е е м :
а = (10, 7, 4, 4, 3, 2);
summa= 15;
s=10;
st = (l, 1, 0, 0, 0, 0, 0).
Выпишем значения переменных при к а ж д о м прохож
дении цикла П О К А .
Значение
Значение переменной s Массив st
переменной i
1
Элемент s<[2] = 3, хоть и присутствует в массиве, но в дальнейшем
рассмотрении не участвует, так как количество элементов равно
sf [ 0 ] = 1 .
258
Значение пе
Значение переменной s Массив st
ременной i
6 s=14 + a[6]=16>15; s r = ( l , 1, 4, 0, 0, 0, 0)
s = s — a [6] = 1 4 ;
s = s — a [ 4 ] = 10;
5 s = 10 + a[5]=13<15; st = (2, 1, 5, 0, 0, 0, 0)
6 s = 1 3 + a[6]=15;
г е я = (10, 3, 2).
Метод, использованный для решения данной задачи,
н а з ы в а е т с я перебором с возвратом или бектрекингом
(Backtracking ).
Н е к о т о р ы е з а д а ч и , я в л я ю щ и е с я на п е р в ы й в з г л я д
переборными, могут быть решены другими методами.
З а д а ч а 3. «Счастливые» билеты
259
ЗАДАЧИ ДЛЯ ПОВТОРЕНИЯ
1. С к о л ь к и м и с п о с о б а м и м о ж н о р а с к р а с и т ь в е р ш и н ы
к у б а в т р и ц в е т а ( н а п р и м е р , к р а с н ы й , синий и з е л е н ы й ) ?
Н а п е ч а т а т ь все в о з м о ж н ы е с п о с о б ы .
2. Сколькими различными способами можно надеть
на н и т ь с е м ь б у с и н д в у х ц в е т о в — с и н е г о и белого?
Н а п е ч а т а т ь все в о з м о ж н ы е в а р и а н т ы .
3. С к о л ь к о р а з л и ч н ы х о ж е р е л и й из с е м и б у с и н м о ж
но с о с т а в и т ь из бусин д в у х ц в е т о в — синего и белого?
( П о д о ж е р е л ь е м п о н и м а е т с я з а м к н у т а я нить с н а н и
з а н н ы м и б у с и н а м и . ) Н а п е ч а т а т ь все в о з м о ж н ы е в а р и
анты.
4. С к о л ь к о р а з л и ч н ы х о ж е р е л и й м о ж н о с о с т а в и т ь из
д в у х б е л ы х , д в у х синих и д в у х к р а с н ы х б у с и н ? Н а п е ч а
т а т ь все в о з м о ж н ы е в а р и а н т ы .
5. Сколькими различными способами можно грани
к у б а р а с к р а с и т ь в ч е т ы р е ц в е т а ? Н а п е ч а т а т ь все в о з
можные варианты.
6. Г р а н и к у б а м о ж н о р а с к р а с и т ь : а ) все в б е л ы й
цвет; б ) все в ч е р н ы й цвет; в) ч а с т ь в б е л ы й , а о с т а л ь н ы е
в черный. Сколько имеется р а з л и ч н ы х способов раскра
ски? Н а п е ч а т а т ь все в о з м о ж н ы е в а р и а н т ы .
7. Н а п е ч а т а т ь все ч е т ы р е х з н а ч н ы е д е с я т и ч н ы е ч и с л а ,
у к о т о р ы х все ц и ф р ы р а з н ы е . О б о б щ и т ь на Af-значные
числа.
8. Д а м а с о б и р а е т с я п р и г л а с и т ь с е м е р ы х своих д р у
зей на н е с к о л ь к о з в а н ы х о б е д о в . Е е с т о л , о д н а к о , неве
л и к , д а и о б е д «в у з к о м к р у г у » н е с о м н е н н о г о р а з д о
п р и я т н е е . П о э т о м у она р е ш а е т п р и г л а ш а т ь к а ж д ы й р а з
л и ш ь т р о и х гостей. К р о м е того, ей х о ч е т с я , ч т о б ы к а ж
д ы е д в о е ее д р у з е й н е п р е м е н н о в с т р е т и л и с ь з а ее с т о л о м ,
п р и ч е м о н а п р е д п о ч л а б ы , ч т о б ы они в с т р е т и л и с ь л и ш ь
о д н а ж д ы . К а к х о з я й к е р а с п р е д е л и т ь п р и г л а ш е н и я по
дням?
9. Н а п и с а т ь а л г о р и т м в ы п л а т ы з а д а н н о й с у м м ы д е
нег в с е м и в о з м о ж н ы м и с п о с о б а м и . В н а л и ч и и и м е ю т с я
260
к у п ю р ы д о с т о и н с т в о м 1, 2, 5, 10, 2 0 и 100 д о л л а р о в .
К о л и ч е с т в о к у п ю р к а ж д о г о в и д а не о г р а н и ч е н о .
10. Н а п и с а т ь п р о г р а м м у , к о т о р а я из б у к в А, В и С
п о с т р о и т с л о в о д л и н ы JV, в к о т о р о м д в а л ю б ы х с т о я щ и х
рядом подслова различны.
Например:
с л о в о АВСАВА составлено правильно;
с л о в о САВАВС с о с т а в л е н о н е п р а в и л ь н о , т а к к а к со
ч е т а н и я б у к в АВ стоят р я д о м .
11. С у щ е с т в у ю т ч и с л а , о б л а д а ю щ и е с в о й с т в а м и :
ч и с л о д е л и т с я на все свои ц и ф р ы ;
ч и с л о , п о л у ч е н н о е из д а н н о г о з а п и с ь ю ц и ф р в о б
р а т н о м п о р я д к е , т о ж е д е л и т с я на все свои ц и ф р ы .
П р и м е р о м т а к о г о ч и с л а я в л я е т с я 216. С о с т а в и т ь п р о
г р а м м у д л я п е ч а т и всех т р е х з н а ч н ы х ч и с е л , о б л а д а ю щ и х
э т и м и с в о й с т в а м и . Ч и с л а с о д и н а к о в ы м и п е р в о й и по
с л е д н е й ц и ф р о й не п е ч а т а т ь .
12. С о с т а в и т ь а л г о р и т м п о л у ч е н и я с л о в а р я п л е м е н и
т у м б а - ю м б а , е с л и и з в е с т н о , что:
а л ф а в и т я з ы к а этого п л е м е н и с о д е р ж и т 4 б у к в ы — а,
Ь, с, d\
с л о в а на я з ы к е этого п л е м е н и не с о д е р ж а т д в у х
и более одинаковых букв подряд.
13. К л е т ч а т о е п о л е пХп о х р а н я е т с я т в о и н а м и ц а р я
А р т а к с е р к с а , з а н и м а ю щ и м и р а з л и ч н ы е к л е т к и этого по
л я . Ц а р ь хочет р а с п о л о ж и т ь воинов т а к , чтобы о б е с п е
чить м а к с и м а л ь н у ю с у м м а р н у ю защищенность границы
с в о е г о в л а д е н и я , т. е. 4 ( я — 1 ) к л е т о к н е п о с р е д с т в е н н о
п р и м ы к а ю щ и х к п о л ю . К а ж д ы й воин о х р а н я е т те п р и г р а
н и ч н ы е к л е т к и , к о т о р ы е он « в и д и т » по г о р и з о н т а л и ,
в е р т и к а л и и д и а г о н а л я м . При этом, защищенность клет
ки п р о п о р ц и о н а л ь н а к о л и ч е с т в у в о и н о в , е е о х р а н я ю щ и х .
П о м о г и т е А р т а к с е р к с у н а й т и хотя б ы о д н о п о л о ж е н и е
в о и н о в по его ж е л а н и ю .
14. У четырех кубиков грани о к р а ш е н ы в четыре р а з н ы х
ц в е т а : к р а с н ы й , синий, з е л е н ы й и о р а н ж е в ы й . Р а з в е р т к и
этих четырех кубиков в ы г л я д я т следующим образом:
261
к 0
3 с с о 3 3 о к
к к
3 о
3 к к 0 3 к с 0
с 0
1. Д а н а с т р о к а S и н а б о р Л с л о в Л ь А.
к Разбить
с т р о к у S на с л о в а н а б о р а в с е м и в о з м о ж н ы м и с п о с о б а м и .
П р и м е р : S = ABBC
А = А, Л = Л В , А = ВС, А = ВВС, Л = Я , Л = В
Х 2 3 4 5 6
S = Л В ВС
S =Л ВВС
S =АВ ВС
2. В н а п и с а н н о м в ы р а ж е н и и ((((1?2)?3)?4)?5)?б в м е
сто к а ж д о г о з н а к а «?» в с т а в и т ь з н а к одной из 4 а р и ф
м е т и ч е с к и х о п е р а ц и й ( + , —, *, / ) т а к , ч т о б ы р е з у л ь т а т
в ы ч и с л е н и й р а в н я л с я 35 ( п р и д е л е н и и д р о б н а я ч а с т ь
в ч а с т н о м о т б р а с ы в а е т с я ) . Н а й т и все р е ш е н и я .
3. Составить программу, которая печатает все различ
ные п р е д с т а в л е н и я ч и с л а N в в и д е в с е в о з м о ж н ы х с у м м
н а т у р а л ь н ы х чисел. П р е д с т а в л е н и я ч и с л а , о т л и ч а ю щ и е
ся т о л ь к о п о р я д к о м с л а г а е м ы х , с ч и т а ю т с я о д и н а к о в ы м и .
4. Н а п и с а т ь п р о г р а м м у , о т в е ч а ю щ у ю на в о п р о с , м о ж
но ли из N д а н н ы х п р я м о у г о л ь н и к о в П, р а з м е р о в (а ь b ),
t
i=l, N, с л о ж и т ь один б о л ь ш о й п р я м о у г о л ь н и к П р а з
м е р а ( а , Ь). Н и ж н и й л е в ы й угол б о л ь ш о г о п р я м о у г о л ь н и
ка и м е е т к о о р д и н а т у (0; 0), с т о р о н ы п а р а л л е л ь н ы о с я м
262
координат; маленькие прямоугольники можно поворачи
в а т ь , но т а к , ч т о б ы их с т о р о н ы п о с л е п о в о р о т а о с т а в а
лись п а р а л л е л ь н ы осям координат. При составлении
П п р я м о у г о л ь н и к и П, м о г у т б ы т ь и с п о л ь з о в а н ы не в с е .
П р я м о у г о л ь н и к и П, не п е р е к р ы в а ю т с я .
О г р а н и ч е н и я : i V < 8 ; a, b, а„ b —целые
t числа.
Ответ в ы д а т ь в виде «да» — «нет», и в случае «да»
н е о б х о д и м о в ы д а т ь д л я к а ж д о г о п р я м о у г о л ь н и к а П,-,
о б р а з у ю щ е г о П, к о о р д и н а т у его л е в о г о н и ж н е г о и п р а в о
го в е р х н е г о у г л о в и его н о м е р L
5 . И г р о в о й а в т о м а т с о с т о и т из н е с к о л ь к и х и з о г н у т ы х
т р у б о к , по ф о р м е п о х о ж и х на п е р е в е р н у т у ю б у к в у Y.
С в е р х у у т р у б ы н а х о д и т с я входное о т в е р с т и е , а д в а
выходных отверстия — снизу. Труба может находиться
в о д н о м из д в у х в о з м о ж н ы х с о с т о я н и й . С о с т о я н и е 1 —
это состояние, в котором з а к р ы т левый выход, Состояние
О — з а к р ы т правый выход.
Ш а р и к и к л а д у т с я в н у т р ь один з а д р у г и м ч е р е з вход
ное о т в е р с т и е . В С о с т о я н и и 1 ( р и с . 3 3 , а) ш а р и к п о к и д а е т
т р у б у ч е р е з н е з а б л о к и р о в а н н ы й п р а в ы й выход, п р и э т о м
С о с т о я н и е 1 а в т о м а т и ч е с к и и з м е н я е т с я на С о с т о я н и е
О ( ( р и с . 3 3 , б ) , п р а в ы й вход з а б л о к и р о в а н , л е в ы й — нет).
В С о с т о я н и и 0 все п р о и с х о д и т н а о б о р о т .
Рис. 34
П у с т ь и г р а л ь н ы й а в т о м а т состоит из 8 Y - о б р а з н ы х
т р у б о к , их в з а и м н о е р а с п о л о ж е н и е п о к а з а н о на р и с у н к е
34. В ы м о ж е т е з а б р а с ы в а т ь ш а р и к и ч е р е з В х о д Л , Вход
В или Вход С. П у с т ь , н а п р и м е р , п е р в ы й ш а р и к о п у с к а е т с я
ч е р е з В х о д Л . Он п о к и д а е т т р у б у G ч е р е з л е в ы й в ы х о д ,
{
и з м е н я я ее с о с т о я н и е с 0 на 1, п о с т у п а е т в G и п о к и д а е т
6
с 0 на 1). Эту п р о ц е д у р у з а п и ш е м с л е д у ю щ и м о б р а з о м :
З а т е м з а б р о с и м ш а р и к ч е р е з В х о д Л (он н а х о д и т с я
в С о с т о я н и и 1). Ш а р и к п о к и д а е т G ч е р е з п р а в ы й в ы х о д ,
{
и з м е н я я С о с т о я н и е 1 в С о с т о я н и е 0, п о п а д а е т в G , поки
4
д а е т G ч е р е з п р а в ы й в ы х о д , и з м е н я я С о с т о я н и е 1 в Со
4
с т о я н и е 0, п о п а д а е т в G , п о к и д а е т а в т о м а т ч е р е з л е в ы й
7
в ы х о д ( и з м е н я я G из С о с т о я н и я 0 в С о с т о я н и е 1). Все
7
в ы ш е и з л о ж е н н ы е д е й с т в и я мы з а п и ш е м в виде:
ЛЛ
264
Е с л и мы опустим третий ш а р и к ч е р е з Вход В, ч е т в е р
тый — ч е р е з В х о д С, то все д е й с т в и я з а п и ш у т с я с л е д у ю
щим образом:
ААВС
Необходимо:
1) Ввести с к л а в и а т у р ы п о с л е д о в а т е л ь н о с т ь из 8 д в о
ичных цифр (бит), п о к а з ы в а ю щ и х соответственно н а ч а л ь
ное С о с т о я н и е G,— G : 8
Бит 7 6 5 4 3 2 l 0
Вход G 8
G 7 G 6 G 5 G 4 G 3
G 2 G,
Н а п р и м е р , п о с л е д о в а т е л ь н о с т ь 11001010 о з н а ч а е т , что
G , G , G и G н а х о д я т с я в С о с т о я н и и 1 ( л е в ы й вход
8 7 4 2
в С о с т о я н и и 0 ( п р а в ы й вход з а б л о к и р о в а н ) .
2) В в е с т и с к л а в и а т у р ы в т о р у ю п о с л е д о в а т е л ь н о с т ь
из 8 бит, п о к а з ы в а ю щ и х к о н е ч н ы е С о с т о я н и я G, — G . 8
3) Н а п е ч а т а т ь п о с л е д о в а т е л ь н о с т ь ходов А, В или С,
у к а з ы в а ю щ у ю , каким образом можно получить конечную
п о з и ц и ю , з а б р а с ы в а я ш а р и к и ч е р е з В х о д ы А, В и С.
6. П у с т ь с л о в о — это п о с л е д о в а т е л ь н о с т ь от 1 д о
8 заглавных букв латинского алфавита.
З а д а е т с я м н о ж е с т в о с л о в A — [a[l], а [2], а [«]},
га<10. Из слов множества А составляется текст —
последовательность слов, з а п и с а н н ы х друг за другом без
п р о б е л о в . С л о в а могут в с т р е ч а т ь с я в т е к с т е п р о и з в о л ь
ное ч и с л о р а з .
Д е ш и ф р о в к а т е к с т а — это р а з б и в к а т е к с т а на с л о в а
м н о ж е с т в а А. В д е ш и ф р о в а н н о м т е к с т е с л о в а р а з д е л я
ются пробелами.
Необходимо:
1) О п р е д е л и т ь , с у щ е с т в у е т л и д л я з а д а н н о г о м н о ж е
с т в а А т а к о й т е к с т , к о т о р ы й д е ш и ф р у е т с я не е д и н с т в е н
н ы м о б р а з о м ( с а м т е к с т п р и в о д и т ь не н а д о ) .
265
Примеры:
а ) А={В, С}
Л ю б о й текст д е ш и ф р у е т с я о д н о з н а ч н о .
б) Л ={В, ВС, С]
Существует текст, который д е ш и ф р у е т с я д в у м я спо
собами:
Т е к с т ->- Д е ш и ф р о в к а
ВВС -у в в с
ВВС -»- В ВС
2 ) Е с л и т а к о й т е к с т с у щ е с т в у е т , то и с к л ю ч и т ь из
м н о ж е с т в а А м и н и м а л ь н о е ч и с л о с л о в та к, ч т о б ы п о с л е
этого л ю б о й т е к с т , с о с т а в л е н н ы й из с л о в п о л у ч е н н о г о
м н о ж е с т в а А, д е ш и ф р о в а л с я о д н о з н а ч н о . Н а п е ч а т а т ь эти
и с к л ю ч е н н ы е с л о в а . Е с л и т а к о й н а б о р не е д и н с т в е н н ы й ,
то н а п е ч а т а т ь все н а б о р ы .
3) Д л я в в е д е н н о г о т е к с т а п р о и з в е с т и его д е ш и ф р о в к у
и, е с л и д е ш и ф р о в к а не е д и н с т в е н н а я , в ы в е с т и все в а
рианты.
1. Во в р е м я п о е з д к и на п о е з д е д е в о ч к а з а м е н и л а
в н а з в а н и и п о е з д а к а ж д у ю б у к в у ее н о м е р о м в р у с с к о м
а л ф а в и т е и п о л у ч и л а з а п и с ь из е д и н и ц и д в о е к
« 2 1 1 2 2 1 — 2 1 2 2 1 » . О п р е д е л и т ь , о т к у д а и к у д а идет п о е з д .
2 . Д а н н ы е N к о с т о ч е к д о м и н о по п р а в и л а м и г р ы
в ы к л а д ы в а ю т с я в п р я м у ю цепочку, начиная с косточки,
в ы б р а н н о й п р о и з в о л ь н о , в о б а к о н ц а д о тех п о р , п о к а это
возможно. Построить алгоритм, позволяющий опреде
лить такой в а р и а н т в ы к л а д ы в а н и я з а д а н н ы х косточек,
п р и к о т о р о м к м о м е н т у , к о г д а ц е п о ч к а не м о ж е т б ы т ь
п р о д о л ж е н а , «на р у к а х » о с т а н е т с я м а к с и м а л ь н о е ч и с л о
очков.
3. В к л е т к а х т а б л и ц ы р а с с т а в л е н ы ч и с л а . Р а с с т а в и т ь
в э т и х к л е т к а х К ф е р з е й т а к , ч т о б ы они д р у г д р у г а не
266
б и л и и чтобы с у м м а чисел, ими з а к р ы в а е м ы х , б ы л а
максимальной.
4 . В в о д и т с я с т р о к а не б о л е е чем из 6 ц и ф р и н е к о т о
рое ц е л о е ч и с л о R. Р а с с т а в и т ь з н а к и а р и ф м е т и ч е с к и х
о п е р а ц и й + , —, * , / ( д е л е н и е е с т ь д е л е н и е н а ц е л о ,
т. е. 1 1 / 3 = 3) и о т к р ы в а ю щ и е и з а к р ы в а ю щ и е к р у г л ы е
скобки так, чтобы получить в результате вычисления
ч и с л о R. Л и ш н и е к р у г л ы е с к о б к и о ш и б к о й не я в л я ю т с я .
Н а п р и м е р : С т р о к а 502597, / ? = 1 2 0 :
( ( 5 + 0 ) * ( 2 5 - ( 9 / 7 ) ) ) = 120.
5. П е р е ч и с л и т ь все р а с с т а н о в к и с к о б о к в п р о и з в е д е
нии га с о м н о ж и т е л е й . П о р я д о к с о м н о ж и т е л е й не м е н я
ется, скобки полностью определяют порядок действий.
( Н а п р и м е р , д л я га = 4 есть 5 р а с с т а н о в о к :
6. С о с т а в и т ь п р о г р а м м у , к о т о р а я п е ч а т а е т все р а з
личные представления числа N в виде всевозможных
с у м м К н а т у р а л ь н ы х чисел (1 <iK<N). П р е д с т а в л е н и я
числа, отличающиеся только порядком с л а г а е м ы х , счи
таются одинаковыми.
7. С о с т а в и т ь п р о г р а м м у , к о т о р а я п е ч а т а е т все р а з
личные представления числа N в виде всевозможных
п р о и з в е д е н и й К н а т у р а л ь н ы х чисел (N, К — в в о д я т с я ,
KK<.N). Е с л и К = 0, то в ы д а т ь в с е в о з м о ж н ы е п р о
изведения. Представления числа, отличающиеся только
порядком сомножителей, считаются одинаковыми.
8. В некоей д е т с к о й к н и г е с т р а н и ц ы р а з д е л е н ы на
три части, причем к а ж д у ю часть можно перелистывать
отдельно. На каждой странице трехсложные имена зве
рей р а с п о л о ж е н ы т а к , что к а ж д ы й с л о г н а х о д и т с я на
о д н о й ч а с т и с т р а н и ц ы ; н а п р и м е р , с л о г и с т о я т т а к : Е-1е-
f a n t , k r o - k o - d i l , k a n - g u - r u h . П о с л е п е р е л и с т ы в а н и я одной
части страницы возможны совмещения: Kro-ko-fant, kan-
le-dil.
Написать программу:
267
а) с помощью которой трехсложные имена зверей
м о ж н о будет д о б а в л я т ь в книгу;
б) к о т о р а я н а х о д и т и п р о т о к о л и р у е т , к а к м о ж н о пе
р е л и с т ы в а т ь к н и г у , ч т о б ы н а й т и п у т ь от одного
данного имени животного к другому;
в) к о т о р а я , р е ш и в п у н к т б ) , н а х о д и т н е с к о л ь к о спо
собов перелистывания.
9. Е с л и кто-то з а х о ч е т р а з в е с т и в а к в а р и у м е э к з о т и
ч е с к и х р ы б , то он не с м о ж е т о б о й т и с ь б е з с о в е т а э к с п е р
т а . П р и п о к у п к е с л е д у е т и м е т ь в в и д у , что не к а ж д ы й
в и д р ы б у ж и в а е т с я с д р у г и м в и д о м и, к о н е ч н о , р ы б ы
н е с о в м е с т и м ы х в и д о в не д о л ж н ы ж и т ь в м е с т е в а к в а р и у
ме и б о р о т ь с я и л и д а ж е п о е д а т ь д р у г д р у г а .
Необходимо написать программу, которая запраши
вает:
а ) с у м м у , которой р а с п о р я ж а ю т с я п р и п о к у п к е р ы б ;
б) и м е ю щ и е с я в и д ы р ы б с ц е н а м и з а ш т у к у ;
в) в и д ы р ы б , не п е р е н о с я щ и е д р у г д р у г а .
П о к у п а т е л ю д о л ж е н б ы т ь в ы п и с а н чек на м а к с и м а л ь
но в о з м о ж н у ю с у м м у , с п е р е ч и с л е н и е м в и д о в р ы б , кото
рые могут у ж и в а т ь с я друг с другом.
10. Д ы р о к о л п р о б и в а е т на д л и н н о й полосе б у м а г и по
д в а о д и н а к о в ы х о т в е р с т и я з а одно н а ж а т и е е г о р ы ч а г а
и п о с л е н е с к о л ь к и х н а ж а т и й п о л у ч а е т с я с л е д у ю щ е е со
стояние бумаги.
О о о о о о о о о о о о
л п л пл п лл пп л п
Б у к в ы Л и П под л е н т о й о б о з н а ч а ю т с о о т в е т с т в е н н о
левое и правое отверстия дырокола.
П о и з в е с т н ы м к о о р д и н а т а м о т в е р с т и й на п о л о с е о п р е
делить возможную ширину между отверстиями дыро
кола.
11. В б и л е т е п а с с а ж и р а о к а з а л о с ь п р о б и т о о т в е р с т и й
б о л ь ш е , чем ш т ы р е й в к о м п о с т е р е . П а с с а ж и р у т в е р ж
д а л , что п о л ь з о в а л с я т о л ь к о о д н и м к о м п о с т е р о м , но
с л у ч а й н о н а ж а л на н е г о н е с к о л ь к о р а з . К о н т р о л е р у
268
т р е б у е т с я о п р е д е л и т ь , могло л и б ы т ь п о л у ч е н о з а д а н н о е
расположение отверстий одним и тем ж е компостером,
если билет м о ж н о пробивать с обеих сторон неограни
ченное число р а з и произвольно п е р е м е щ а т ь и поворачи
в а т ь о т н о с и т е л ь н о к о м п о с т е р а . П р о б и т ы е о т в е р с т и я не
выходят за пределы билета. В билете было пробито
N(N<.10) отверстий.
1 ) Д л я к о м п о с т е р а с д в у м я ш т ы р я м и ( S = 2) с о с т а
вить программу, которая:
а ) о п р е д е л я е т , м о ж н о ли п о л у ч и т ь з а д а н н ы м к о м
п о с т е р о м т р е б у е м о е р а с п о л о ж е н и е о т в е р с т и й в би
л е т е ( е с л и это в о з м о ж н о , то и з о б р а ж а е т в и д б и л е
та п о с л е к а ж д о г о н а ж а т и я к о м п о с т е р а , в п р о т и в
ном с л у ч а е в ы в о д и т с о о т в е т с т в у ю щ е е с о о б щ е н и е ) ;
б) о п р е д е л я е т к о л и ч е с т в о К р а з л и ч н ы х к о м п о с т е р о в ,
к а ж д ы м из к о т о р ы х м о ж н о п р о б и т ь з а д а н н у ю кон
фигурацию;
в) п р и К==0 н а х о д и т к о м п о с т е р , с п о м о щ ь ю к о т о р о г о
м о ж н о п р о б и т ь н а и б о л ь ш е е к о л и ч е с т в о из з а д а н
ных отверстий;
г) н а х о д и т м и н и м а л ь н о е число н а ж а т и й , т р е б у е м о е
для пробивки заданной конфигурации отверстий,
д л я к а ж д о г о к о м п о с т е р а из п. б).
2) Р е ш и т ь з а д а ч у 1) д л я к о м п о с т е р о в с ч и с л о м
штырей S ( S > 2 ) .
Примечания.
1. Все исходные данные — натуральные числа.
2. Компостеры, дающие при однократном нажатии совпадающие
конфигурации отверстий, считаются одинаковыми.
3. Относительное расположение отверстий в билете и штырей
в компостере вводится либо с клавиатуры, либо из файла с именем
COMP.DAT. Структура вводимой информации:
у[1], x[N], y[N], S, и[II о[1], u[S], v[S}},
где x[i], y[i]—координаты отверстий в билете, u[i], v[i\—координа
ты штырей в компостере.
4. Нажатие компостера моделировать клавишей «Пробел».
5. При выводе конфигурации на экран изображать координатную
сетку. При этом программа должна осуществлять подходящее масшта
бирование.
269
12. О д н и м из с т а н д а р т н ы х м е т о д о в к о д и р о в а н и я ин
ф о р м а ц и и к о г д а - т о б ы л с л е д у ю щ и й : т е к с т ( д л и н ы /) з а
п и с ы в а л с я по с т р о к а м с л е в а н а п р а в о с в е р х у в н и з в п р я
м о у г о л ь н и к е р а з м е р а mXn(m'n^l), д о п о л н я я с ь , по не
о б х о д и м о с т и , п р о б е л а м и ; п о с л е э т о г о т е к с т из п р я м о
у г о л ь н и к а в ы п и с ы в а л с я по с т о л б ц а м и п о л у ч а л о с ь
шифрованное сообщение.
Н а п р и м е р , и с х о д н ы й т е к с т « I t is a n i c e w e a t h e r
t o d a y » ( m = 5, « = 6):
1 2 3 4 5 6
1 I t — i s —
2 a — n 1 с e
3 — w e a t h
4 e г — t 0 d
5 a У — — — —
н и к о в в р а з л и ч н ы х с в о б о д н ы х к л е т к а х . И ц а р е в н а , и ее
двойники одинаково надежно укрыты и невидимы.
О т п р а в и в ш и й с я на п о и с к и ц а р е в н ы И в а н у ш к а - д у р а
чок п о п р о с и л у б л а г о в о л я щ е й к н е м у щ у к и д а т ч и к
270
б и о с и г н а л о в . И з в е с т н о , что и М а р ь я Ц а р е в н а и е е д в о й
ники испускают незатухающие н а п р а в л е н н ы е биолучи,
распространяющиеся параллельно сторонам и диагона
л я м поля.
И в а н у ш к а - д у р а ч о к т а к ж е з н а е т , что и н т е н с и в н о с т ь
биолуча М а р ь и Ц а р е в н ы в т р а з в ы ш е интенсивности
б и о л у ч е й д в о й н и к о в . И в а н у ш к а м о ж е т у с т а н о в и т ь свой
датчик в любую клетку поля и получить величину сум
марной интенсивности биолучей, приходящих в клетку.
Помогите Иванушке определить местонахождение на
стоящей царевны.
14. К Ш т и р л и ц у п о п а л а з а к о д и р о в а н н а я з а п и с к а Б о р
мана:
Ш т и р л и ц з н а л , что Б о р м а н п и ш е т п о - р у с с к и , и с п о л ь
з у я о б ы ч н у ю н у м е р а ц и ю б у к в в р у с с к о м а л ф а в и т е от
1 д о 3 3 . П р о б е л м е ж д у с л о в а м и он о б о з н а ч а е т н о м е р о м
0. Т а к ж е он з н а л , что Б о р м а н к о д и р у е т свои с о о б щ е н и я ,
д о б а в л я я к н о м е р у к а ж д о й б у к в ы ч и с л о х = па-\-Ь, где
п — п о р я д к о в ы й н о м е р этой б у к в ы в с о о б щ е н и и , а и Ь —
константы, известные только Борману. Если результат
о к а з ы в а е т с я б о л ь ш е 3 3 , то из него в ы ч и т а е т с я 34. К р о м е
того, Б о р м а н ни в о д н о м с о о б щ е н и и не о б х о д и т с я б е з
местоимения «Я». Р а с ш и ф р у й т е записку.
15. Н а д о с к е р а з м е р а 3 X 3 п р о и з в о л ь н ы м о б р а з о м
р а с с т а в л е н ы ф и ш к и , з а н у м е р о в а н н ы е от 1 до 7. З а один
ход м о ж н о п е р е д в и н у т ь ф и ш к у на с в о б о д н о е с о с е д н е е
п о л е по г о р и з о н т а л и или по в е р т и к а л и . Н а п и с а т ь п р о
г р а м м у , приводящую фишки в конечную позицию:
1 2
со
4 5 6
271
16. Н а оси Ох б ы л и з а д а н ы N т о ч е к с ц е л о ч и с л е н н ы
ми к о о р д и н а т а м и . Н е к о т о р ы е точки м о г у т и м е т ь о д и н а
ковые координаты. Б ы л и измерены и записаны всевоз
можные расстояния между этими точками. Расстояние
м е ж д у д в у м я т о ч к а м и м ы х р а н и м т о л ь к о один р а з ,
р а с с т о я н и е от т о ч к и д о нее с а м о й ( р а в н о е 0) не х р а н и т с я ,
п о э т о м у р а с с т о я н и й всего N(N —\)/2.
Н е о б х о д и м о по в в е д е н н о й п о с л е д о в а т е л ь н о с т и из
N (N—1)/2 р а с с т о я н и й н а й т и одно из в о з м о ж н ы х р а с п о
л о ж е н и й т о ч е к на п р я м о й или у к а з а т ь , что т а к о г о не
существует.
17. Д а н ы 4 с л о в а . Д л и н а к а ж д о г о с л о в а не б о л е е
12 с и м в о л о в . Н а п и с а т ь п р о г р а м м у , п р о в е р я ю щ у ю , м о ж н о
л и из д а н н ы х с л о в с о с т а в и т ь к р о с с в о р д при у с л о в и и , что
к а ж д о е слово пересекается с двумя другими и распола
г а е т с я сверху в н и з или с л е в а н а п р а в о . С е т к а не
о б я з а т е л ь н о с и м м е т р и ч н а . Р е з у л ь т а т в ы в е с т и на э к р а н
в виде кроссворда.
В в о д : в в о д я т с я 4 с л о в а , по о д н о м у в с т р о к е .
В ы в о д : на э к р а н в ы в о д и т с я один из в а р и а н т о в
кроссворда или слово " Н е л ь з я " .
Пример:
Ввод: Вывод:
АЛЬФА АЛЬФА
АСТРА С А
ФАКИР Т К
АВАРИЯ Р И
АВАРИЯ
18. Н а п е ч а т а т ь в с е п о с л е д о в а т е л ь н о с т и из k п о л о ж и
т е л ь н ы х ц е л ы х ч и с е л , у к о т о р ы х i-й член не превосхо
д и т i.
19. П о с т р о и т ь все о т о б р а ж е н и я м н о ж е с т в а {1, k)
в {1, «} ( п р е д п о л а г а е т с я , что k^ln), т а к и е , что ни
один э л е м е н т не п е р е х о д и т с а м в с е б я . П о р о ж д е н и е
очередного элемента д о л ж н о требовать порядка k дей
ствий.
272
2 0 . Н а п е ч а т а т ь все п е р е с т а н о в к и чисел I, 2, п так,
ч т о б ы к а ж д а я с л е д у ю щ а я п о л у ч а л а с ь из п р е д ы д у щ е й
п е р е с т а н о в к о й ( т р а н с п о з и ц и е й ) д в у х соседних ч и с е л . Н а
п р и м е р , при я = 3 д о п у с т и м т а к о й п о р я д о к :
3. 2 1 - ^ - 2 3 . 1 - ^ 2 . 1 3 + 1 2 . 3 + 1 . 3 2 + 3 1 2
( м е ж д у переставляемыми числами вставлены точки).
2 1 . Э л е м е н т а м и п о с л е д о в а т е л ь н о с т и д л и н ы 2п могут
б ы т ь ч и с л а 1 или — 1 . С у м м а всех э л е м е н т о в п о с л е д о в а
т е л ь н о с т и р а в н а н у л ю . П е р е ч и с л и т ь все т а к и е п о с л е д о в а
тельности, у которых сумма любого начального отрезка
п о л о ж и т е л ь н а (т. е. ч и с л о минус е д и н и ц в нем не п р е в о с
ходит числа единиц).
22. Н а о к р у ж н о с т и з а д а н о 2п т о ч е к , п р о н у м е р о в а н
н ы х от 1 до 2гг. П е р е ч и с л и т ь в с е с п о с о б ы п р о в е д е н и я
п н е п е р е с е к а ю щ и х с я х о р д с в е р ш и н а м и в этих т о ч к а х .
2 3 . П е р е ч и с л и т ь все п о с л е д о в а т е л ь н о с т и из п н у л е й ,
е д и н и ц и д в о е к , в к о т о р ы х н и к а к а я г р у п п а ц и ф р не
п о в т о р я е т с я д в а р а з а п о д р я д (нет к у с к а в и д а XX).
2 4 . Е с т ь N к а р т о ч е к . Н а к а ж д о й из них ч е р н ы м и
ч е р н и л а м и н а п и с а н ее у н и к а л ь н ы й н о м е р — ч и с л о от
1 д о N. Т а к ж е на к а ж д о й к а р т о ч к е к р а с н ы м и ч е р н и л а м и
н а п и с а н о е щ е одно ц е л о е ч и с л о , л е ж а щ е е в п р о м е ж у т к е
от 1 д о N ( н е к о т о р ы м и о д и н а к о в ы м и « к р а с н ы м и » ч и с л а
ми м о г у т п о м е ч а т ь с я н е с к о л ь к о к а р т о ч е к ) .
Н а п р и м е р , iV = 5; 5 к а р т о ч е к п о м е ч е н ы с л е д у ю щ и м
образом:
«Черное» число 1 2 4 5
СО
«Красное» число 3 2 4 2
со
Н е о б х о д и м о в ы б р а т ь из д а н н ы х N к а р т о ч е к м а к с и
мальное число карточек таким о б р а з о м , чтобы множе
с т в а « к р а с н ы х » и « ч е р н ы х » чисел на них с о в п а д а л и .
Д л я р а с с м о т р е н н о г о п р и м е р а это б у д у т к а р т о ч к и
с « ч е р н ы м и » н о м е р а м и 2, 3 , 4 ( м н о ж е с т в о к р а с н ы х
н о м е р о в , к а к и т р е б у е т с я в з а д а ч е , то ж е — {2, 3, 4}).
10 Информатика, 8—9 кл.) 273
ввод
< N = > N , N<50
< " Ч е р н ы й " н о м е р 1, " к р а с н ы й " — > " к р а с н о е " _ ч и с -
ло_1
< С " Ч е р н ы й " номер N, " к р а с н ы й " — > " к р а с н о е " чис-
ло__Н
ВЫВОД:
< В выбранном- множестве элементов > к о л и ч е с т в о _ _ э л е -
ментов S
< " Ч е р н ы е " номера выбранных к а р т о ч е к > а 1 , aS
25. «Тетрамино». Д а н о поле р а з м е р а 6 X 6 клеток.
К л е т к и п р о н у м е р о в а н ы от 1 до 36 с л е в а направо
и сверху вниз (как при письме).
Р о в н о ч е т ы р е к л е т к и из них з а к р а ш е н ы . Н а п и с а т ь
программу, которая для введенных номеров з а к р а ш е н
ных к л е т о к в ы я с н я е т , о б р а з у ю т л и они к а к у ю - л и б о ф и г у
ру т е т р а м и н о (эти ф и г у р ы м о г у т б ы т ь п о в е р н у т ы ) :
1 2 3 4 5 6 7
Е с л и в в е д е н н ы й н о м е р м е н ь ш е 1 и л и б о л ь ш е 36, или
к а к о й - т о н о м е р в в е д е н п о в т о р н о , то в ы в е с т и с о о б щ е н и е
"Ошибка".
Если закрашенные клетки образуют фигуру тетрами
но, в ы в е с т и н о м е р этого т е т р а м и н о , в п р о т и в н о м с л у ч а е
выдать сообщение: " Н е тетрамино".
П у с т ь з а к р а ш е н ы N к л е т о к . Ч и с л о N и н о м е р а этих
клеток вводятся. Определить, можно ли разбить з а к р а
ш е н н у ю о б л а с т ь на ф и г у р ы т е т р а м и н о . Ф и г у р ы не м о г у т
п е р е с е к а т ь с я , и о б ъ е д и н е н и е э т и х ф и г у р п о л н о с т ь ю сов
падает с закрашенной областью.
В ы д а т ь с о о б щ е н и е " М о ж н о р а з б и т ь " или " Н е л ь з я
274
р а з б и т ь " . В случае, если р а з б и в к а возможна, в ы д а т ь
какую-нибудь разбивку в виде:
Н о м е р ф и г у р ы . Н о м е р а о б р а з у ю щ и х ее к л е т о к .
Н о м е р ф и г у р ы . Н о м е р а о б р а з у ю щ и х ее к л е т о к .
26. И м е е т с я N (N<Z7) дисков одинаковой толщины
с р а д и у с а м и г,, г . Эти д и с к и у п а к о в ы в а ю т с я в ко
п
р о б к у т а к и м о б р а з о м , что к а ж д ы й из них с т о и т р е б р о м
на д н е к о р о б к и и все д и с к и н а х о д я т с я в одной п л о с к о с т и .
Н а й т и м и н и м а л ь н у ю д л и н у к о р о б к и , в к о т о р у ю все
они могут б ы т ь у п а к о в а н ы , и у к а з а т ь п о р я д о к одной из
возможных упаковок.
Вход:
< 1-я с т р о к а >N
<2-я строка>г г ...r у 2 N
Выход:
М и н и м а л ь н а я длина: число
Возможный порядок: порядок
Пример:
3
2.02.01.0
М и н и м а л ь н а я д л и н а : 9.65685
Возможный порядок: 1 3 2
УКАЗАНИЯ К Р Е Ш Е Н И Ю ЗАДАЧ
ПОВЫШЕННОЙ сложности
1. Эта з а д а ч а р е а л и з у е т с я с л е д у ю щ и м р е к у р с и в н ы м
алгоритмом поиска с возвращением (все слова набора
Л у п о р я д о ч е н ы по н о м е р а м ) .
а ) Е с л и с т р о к а п у с т а я , то о д н а из в о з м о ж н ы х д е
шифровок найдена, иначе — при разборе текста
мы п р о в е р я е м Л,- ( п р и и з м е н е н и и i от 1 до п) на
в х о ж д е н и е в н а ч а л о д е ш и ф р у е м о й в д а н н ы й мо
мент с т р о к и .
б ) Е с л и к а к о е - т о Л,- входит в с т р о к у к а к п р е ф и к с , то
з а п о м и н а е м н о м е р i этого с л о в а , з а т е м в ы д е л я е м
с л о в о из с т р о к и , а с о с т а т к о м т е к с т а п р о и з в о д и м
о п е р а ц и ю р а з б о р а по п у н к т у а ) .
275
Е с л и ни одно из Л, не в х о д и т в к а ч е с т в е п р и с т а в к и
в д е ш и ф р у е м у ю с е й ч а с с т р о к у , то о с у щ е с т в л я е м в о з в р а т
на п у н к т а ) , п р е д в а р и т е л ь н о д о б а в л я я в н а ч а л о с т р о к и
п о с л е д н е е у д а л е н н о е о т т у д а слово, и п ы т а е м с я в ы д е л и т ь
из т е к с т а с л о в о с б о л ь ш и м н о м е р о в в А. Е с л и в о з в р а т
осуществить невозможно (так к а к мы находимся в нача
л е исходной с т р о к и ) , то а л г о р и т м з а к а н ч и в а е т с в о ю
р а б о т у . Все в о з м о ж н ы е д е ш и ф р о в к и н а й д е н ы .
2. В с е г о м о ж е т б ы т ь 4 а р и ф м е т и ч е с к и х о п е р а ц и и ( + ,
—, * , / ) . З а н у м е р у е м их от 0 д о 3 . В м е с т о к а ж д о г о из
п я т и з н а к о в «?» м о ж е т с т о я т ь один из з н а к о в о п е р а ц и и .
З а в е д е м м а с с и в Л из 5 ц е л ы х ч и с е л , в г-м э л е м е н т е
м а с с и в а б у д е т х р а н и т ь с я к о д с о о т в е т с т в у ю щ е й i-му з н а
ку «?» о п е р а ц и и , т. е. ч и с л о от 0 до 3 . Н а ч а л ь н а я к о н ф и
г у р а ц и я — все э л е м е н т ы м а с с и в а н у л е в ы е , к о н е ч н а я —
все они р а в н ы 3. Г е н е р а ц и я о ч е р е д н о й к о н ф и г у р а ц и и
знаков равносильна прибавлению единицы в четверич
ной с и с т е м е с ч и с л е н и я , в которой р а з р е ш а е т с я п о л ь з о
в а т ь с я т о л ь к о ц и ф р а м и от 0 до 3 . Т а к а я г е н е р а ц и я
о п и с а н а в а л г о р и т м е (5.3).
3. П р е д л о ж и м простой с п о с о б п о с т р о е н и я всех р а з б и
ений ч и с л а на с л а г а е м ы е . Р а з б и е н и я б у д у т с т р о и т ь с я
в порядке, обратном лексикографическому. Очевидно,
что п е р в ы м р а з б и е н и е м в т а к о м п о р я д к е б у д е т р а з б и е
ние, с о д е р ж а щ е е одно с л а г а е м о е , р а в н о е N, а п о с л е д
ним — р а з б и е н и е из N с л а г а е м ы х , р а в н ы х 1.
К а к выглядит разбиение, следующее непосредственно
за разбиением
л = с, + . . . + с ? к
s= a + a
t i + l + ...+a .
k
276
Л е г к о в и д е т ь , что эти у с л о в и я о д н о з н а ч н о о п р е д е л я
ют з н а ч е н и е / :
t = m a x { i : a > 1}.
;
s= a t + l + ... + 1,
г д е а , - > 1 , а к о л и ч е с т в о е д и н и ц р а в н о k — /. Т а к и м р а з б и
ением является разбиение
Si = p + P + --- +P + (s m o d р),
где p = a — 1.t
4. К а ж д ы й П, м о ж н о п о л о ж и т ь л и б о г о р и з о н т а л ь н о ,
л и б о в е р т и к а л ь н о . Б у д е м з а п о л н я т ь П от н и ж н е г о л е в о г о
угла.
На каждом шаге:
1) искать в у ж е заполненной фигуре " н и ш у " с мини
мальными координатами левого нижнего угла;
2) д л я к а ж д о г о из е щ е не и с п о л ь з о в а н н ы х II,
повторять
б р а т ь о ч е р е д н о й П; и п ы т а т ь с я в с т а в и т ь в
'нишу"
е с л и у д а л о с ь , и мы не в ы ш л и з а п р е д е л ы П,
то
п о м е т и т ь II,- к а к и с п о л ь з о в а н н ы й и на ш а г 1
scratch:
п о м е т и т ь II, к а к н е и с п о л ь з о в а н н ы й
к о н е ц то
конец д л я
е с л и и с п о л ь з о в а л и все П„ то п е ч а т ь р е з у л ь т а т а .
Стоп
е с л и не и с п о л ь з о в а н ни один П , ;
то р е ш е н и я нет
и н а ч е в о з в р а т на s c r a t c h .
5. Во всех у з л а х ( т р у б к а х ) с х е м ы мы д о л ж н ы п о л у
чить с о с т о я н и е G'. П е р в о н а ч а л ь н о у с т а н о в и м G G и G
h 2 3
277
в G[, G и G' , в б р а с ы в а я , по необхо
2 5
G' и О'з, н е о б х о д и м о , ч т о б ы ч е р е з
2
к а ж д ы й из входов забрасывалось
iG4
л и ш ь четное ч и с л о ш а риков.
Если проследить за шариками, за
б р о ш е н н ы м и в и г р о в о й а в т о м а т , то
м ы м о ж е м з а м е т и т ь , что р е з у л ь т а т
хода, н а п р и м е р , ABC а н а л о г и ч е н ре
з у л ь т а т у х о д а ВСА, т. е. от п о р я д к а
з а б р а с ы в а н и я р е з у л ь т а т не з а в и с и т .
C6 C7
Р а с с м о т р и м у з л ы , с о с т о я н и е кото
рых может меняться при з а б р а с ы в а
Рис. 35
нии ш а р и к о в ч е р е з вход Л , т а к к а к
п р и в ы б р а н н о й м е т о д и к е з а б р а с ы в а н и я т о л ь к о четного
ч и с л а ш а р и к о в ( р и с . 35) ч е р е з входы в с е г д а G, = G\, то
с о с т о я н и й G G G м о ж е т б ы т ь л и ш ь 2 = 8, от ООО до
6 4 7
3
111. Е с л и м ы б у д е м з а б р а с ы в а т ь ч е р е з Л п а р ы ш а р и к о в ,
т о при з а б р а с ы в а н и и с е р и и м а к с и м у м из 8 п а р ш а р и к о в
к а к о е - т о с о с т о я н и е G G G д о л ж н о о б я з а т е л ь н о повто
6 4 7
р и т ь с я на п р о т я ж е н и и с е р и и . Д а л е е с о с т о я н и я б у д у т
ц и к л и ч е с к и п о в т о р я т ь с я , и с л у ч а й с з а б р а с ы в а н и е м бо
лее 8 пар шариков сводится к случаю с количеством пар,
не п р е в о с х о д я щ и м 8.
А н а л о г и ч н о д л я з а б р а с ы в а н и я ш а р и к о в ч е р е з В мы
п о л у ч а е м с е р и ю из не б о л е е ч е м 2 = 32 п а р ш а р и к о в , на
5
п р о т я ж е н и и к о т о р о й б у д у т у с т а н о в л е н ы все в о з м о ж н ы е
состояния G , G , G , G , G , а д л я входа С серия, как
4 5 6 7 8
и д л я Л , б у д е т и м е т ь д л и н у не б о л е е 8 п а р .
П е р е б и р а я все в о з м о ж н ы е к о м б и н а ц и и А , В , 2х С
2у 2г
з а б р а с ы в а н и я шариков (тут А о б о з н а ч а е т с е р и ю из 2х
2х
з а б р а с ы в а н и й ш а р и к о в ч е р е з вход Л , О ^ х , у ^ 8 , 0 < !
^ 2 ^ 3 2 ) , получаем либо комбинацию — решение зада
чи, л и б о о п р е д е л я е м о т с у т с т в и е р е ш е н и я .
6. О д и н из в о з м о ж н ы х а л г о р и т м о в р е ш е н и я з а д а ч и
такой:
278
cUl c[3] cYml
Рис. 36
1) П р е д п о л о ж и м , что с у щ е с т в у е т т е к с т , д е ш и ф р о в к а
которого неоднозначна, следовательно, существует и
т е к с т м и н и м а л ь н о й д л и н ы , д л я к о т о р о г о в о з м о ж н ы по
меньшей мере две разбивки
b[l]b [2]. ..Ь[к] = с[\]с [2]. ..с[т]
на с л о в а м н о ж е с т в а А. П р е д с т а в л я я т е к с т в в и д е о т р е з
к а DE, эти р а з б и в к и мы м о ж е м и з о б р а з и т ь , к а к на р и
с у н к е 36.
И з того, что т е к с т м и н и м а л ь н о й д л и н ы , с л е д у е т , что
к о н ц ы с л о в в р а з н ы х р а з б и в к а х не могут л е ж а т ь на
о д н о й в е р т и к а л и ( к р о м е к о н ц а т е к с т а ) . Т а к к а к Л [ 1J
=т^с[1], то одно из к о д о в ы х с л о в ( н а п р и м е р , Ь[\\) д о л ж н о
входить в другое в качестве префикса и представляться
в в и д е с [l] = b [1] р [1], где р [1] — о с т а в ш а я с я ч а с т ь с л о
в а ( с у ф ф и к с ) . Д а л е е , л и б о р[1] входит в Ь [2] ( Ь [2] =
= р[\]р[2]), л и б о Ь[2] входит в p[l] {р [1] = b [2] р [1])
в к а ч е с т в е п р е ф и к с а . О п р е д е л я е м н о в ы й с у ф ф и к с р [2].
Продолжая выделять префиксы и суффиксы, получаем,
что на к а к о м - т о ш а г е р [/'] с о в п а д а е т с о д н и м из к о д о в ы х
слов.
Э т и р а с с у ж д е н и я я в л я ю т с я основой с л е д у ю щ е г о а л г о
ритма.
Н а н у л е в о м ш а г е в о з ь м е м все п а р ы (а [г]; а [/], 1Ф ]
т а к и х к о д о в ы х с л о в , что одно из них е с т ь п р е ф и к с д р у г о
го, и н а й д е м все с у ф ф и к с ы р [О, Щ.
Н а / м ш а г е д л я всех п а р (p[j— 1, k]; а [/]), где одно
из с л о в я в л я е т с я п р е ф и к с о м д р у г о г о , о п я т ь н а х о д и м все
с у ф ф и к с ы , и т е из них, к о т о р ы е не п о я в л я л и с ь на п р е д ы
д у щ и х ш а г а х а л г о р и т м а , о б о з н а ч и м р [j, к].
279
Эти ш а г и п о в т о р я е м л и б о до тех п о р , п о к а к а к о й - л и б о
с у ф ф и к с не с о в п а д а е т с о д н и м из к о д о в ы х с л о в (и т о г д а
с у щ е с т в у е т н е о д н о з н а ч н о д е к о д и р у е м ы й т е к с т ) , л и б о по
к а на о ч е р е д н о м ш а г е не п о я в и т с я ни одного нового
с у ф ф и к с а (и т о г д а д л я л ю б о г о т е к с т а с у щ е с т в у е т е д и н с т
венная дешифровка).
Т а к к а к к о л и ч е с т в о к о д о в ы х с л о в о г р а н и ч е н о , то
и с у ф ф и к с о в т а к ж е конечное ч и с л о , и на к а к о м - т о ш а г е
алгоритм обязательно остановится.
Этот а л г о р и т м в п е р в о н а ч а л ь н о м в а р и а н т е п р и н а д л е
ж и т А. С а р д и н а с у и Д ж . П а т т е р с о н у ( К и б е р н е т и ч е с к и й
с б о р н и к . В ы п . 3. С. 9 3 — 1 0 2 ) .
2) Е с л и с у щ е с т в у е т т е к с т , к о т о р ы й при и с п о л ь з о в а н и и
Л д е ш и ф р у е т с я н е о д н о з н а ч н о , то н а ч и н а е м в ы б р а с ы в а т ь
из А с л о в а и их к о м б и н а ц и и , п ы т а я с ь п о л у ч и т ь мно
ж е с т в о А' с м а к с и м а л ь н ы м ч и с л о м с л о в т а к о е , что все
т е к с т ы , с о с т а в л е н н ы е из с л о в Л ' , д е ш и ф р у ю т с я одно
значно.
С н а ч а л а из Л у д а л я е м i-e с л о в о , i— 1, 2, п, и д е л а
ем п р о в е р к у по п у н к т у 1). Е с л и у д а л е н и е м одного с л о в а
из Л мы не п о л у ч а е м и с к о м о г о м н о ж е с т в а Л ' , то т о г д а
г е н е р и р у е м все с о ч е т а н и я по л — 2 с л о в а из м н о ж е с т в а
Л и д л я к а ж д о г о полученного множества делаем провер
ку по п у н к т у 1) и т. д.
В о с п о л ь з у е м с я а л г о р и т м о м (5.2) г е н е р а ц и и с о ч е т а н и й
no i с л о в из м н о ж е с т в а Л .
3) Э т о т п у н к т р е а л и з у е т с я с л е д у ю щ и м р е к у р с и в н ы м
а л г о р и т м о м п о и с к а с в о з в р а щ е н и е м (все с л о в а м а с с и в а
Л у п о р я д о ч е н ы по н о м е р а м ) :
а ) е с л и с т р о к а п у с т а я , то о д н а из в о з м о ж н ы х де
ш и ф р о в о к н а й д е н а , и н а ч е при р а з б о р е т е к с т а мы
п р о в е р я е м a[i] ( п р и и з м е н е н и и г от 1 до п) на
в х о ж д е н и е в н а ч а л о д е ш и ф р у е м о й в д а н н ы й мо
мент строки.
б) е с л и к а к о е - т о a[i] входит в с т р о к у к а к пре
ф и к с , то з а п о м и н а е м н о м е р i этого с л о в а , з а т е м
в ы д е л я е м с л о в о из с т р о к и , а с о с т а т к о м т е к с т а
п р о и з в о д и м о п е р а ц и ю р а з б о р а по п у н к т у а ) .
280
Е с л и ни одно из a[i] не входит в к а ч е с т в е п р е ф и к с а
в д е ш и ф р у е м у ю с е й ч а с с т р о к у , то о с у щ е с т в л я е м в о з в р а т
на п у н к т а), п р е д в а р и т е л ь н о д о б а в л я я в н а ч а л о с т р о к и
п о с л е д н е е у д а л е н н о е о т т у д а слово, и п ы т а е м с я в ы д е л и т ь
из т е к с т а с л о в о с б о л ь ш и м н о м е р о м в А. Е с л и в о з в р а т
осуществить невозможно (так как мы находимся в нача
л е исходной с т р о к и ) , то а л г о р и т м з а к а н ч и в а е т с в о ю
р а б о т у . Все в о з м о ж н ы е д е ш и ф р о в к и н а й д е н ы .
Задача 1. Д о к а ж и т е с л е д у ю щ у ю т е о р е м у ( М а р
ков А. А.):
Д л я однозначности декодировки текста достаточно
в ы п о л н е н и я одного из д в у х с л е д у ю щ и х у с л о в и й :
1) не с у щ е с т в у е т ни одной п а р ы к о д о в ы х с л о в (a[i],
а
[/])» » ' < > / ' , т а к о й , что о д н о из этих с л о в е с т ь
префикс другого.
2) не с у щ е с т в у е т ни одной п а р ы к о д о в ы х с л о в (a[i],
а
[/])> ' < > Л т а к о й , что одно из них е с т ь с у ф ф и к с
другого.
Задача 2. П р и в е д и т е п р и м е р т а к о г о м н о ж е с т в а
к о д о в ы х с л о в , что д л я него не в ы п о л н я е т с я ни у с л о в и е 1,
ни у с л о в и е 2 из з а д а ч и 1, а д е к о д и р о в к а л ю б о г о т е к с т а ,
с о с т а в л е н н о г о при п о м о щ и этих с л о в , — о д н о з н а ч н а я .
Приложения
= у2-у1;
= х1-х2; (1.1)
= -Х1*(у2-у1)+у1*(х2-х1);
P:=false;
if (хЗ-х1 )*(у2-у1 )-(уЗ-у1 )*(х2-х1 )=0 then
P:=true; (1.2)
L:="no одну";
Z1 :=(хЗ-х1 )*(у2-у1 )-(уЗ-у1 )*(х2-х1);
Z2:=(x4-x1 )*<у2-у1 )-(у4-у1 )*(х2-х1);
if Z1*Z2<0 then
L:="no р а з н ы е " ; (1.3)
P:=true;
Z1 :=(хЗ-х1)*(у2-у1 )-(уЗ-у 1 )*(x2-x1);
Z2:=(x4-x1 )*(y2-y1 )-(y4-y1 )*(x2-x1);
if Z1*Z2>0 then
P:=false; (1.4)
Z3:=(x1 -хЗ)*(у4-уЗ)-(у1 -y3)*(x4-x3);
Z4:=(x2-x3)*(y4-y3)-(y2-y3)*(x4-x3);
if Z3*Z4>0 then
P:=false;
A:=y2-y1;
B:=x1-x2;
C:=-x1 *(y2-y1 )+y1 *(x2-x1); (1.5)
T:=SQRT(A*A+B*B);
D:=ABS((A*x3+B*y3+C)/T);
Ь:="Выпукль!Й"
for i:=1 to n do
begin
j:=i mod n+1;
k:=j m o d n+1;
m:=i-1;
if i=1 then
M:=N;
Z1:=(X[M]-X[I]R(YU]-Y[I])-(Y[M]-Y[I]R(XD]-X[I]);
Z2:=(X[K]-X[I]R(YU]-Y[I])-(Y[K]-Y[I])*(XG]-X[I]);
IF 2 1 * Z 2 < 0 THEN
1_:="НЕВЫПУКЛЫЙ";
END;
P:=(A+B+C)/2
S:=SQRT(P*(P-AR(P-B)*(P-C));
YMIN:=Y[1];
FOR K : = 2 TO N D O
IF Y M I N > Y[K] THEN
YMIN:=Y[K];
FOR K : = 1 TO N + 1 D O
Y1[K]:=Y[K]-YMIN;
S:=0;
FOR K : = 1 TO N D O
S : = S + { X [ I + 1 ] - X [ I ] ) * ( Y 1 [ I + 1 ] + Y 1 [I]);
S:=ABS(S)/2;
XMIN:=X[1];
FOR K : = 2 TO N D O
IF X M I N > X[K] THEN
XMIN:=X[K];
X:=XMIN-1;
Y:=Y[0];
S:-0; (1.9)
FOR I : = 1 TO N D O X
BEGIN
Z1:=(X[I]-X[0]R(Y-Y[0])-(Y[I]-Y[0]R(X-xt0])
Z2:=(X[I+1]-X[0]R(Y-Y[0])-(Y[I+1]-Y[0])*(X-X[0])
IF Z R Z 2 < 0 THEN
S:=S+1;
END;
Ь:="ВНУТРИ";
IF S M O D 2 = 0 THEN
L:="BHe";
283
P:=false;
f o r i:=1 t o N d o
ifA[i]=Xthen (2.1)
P:=true;
K:=0;
f o r i:=1 t o N d o
if A [ i ] = X t h e n (2.2)
K:=i
i:=1;
w h i l e (i<=n) a n d (A[i]<>X) (2.3)
i:=i+1
A[N+1]:=X; i:=1;
while (A[i]<>X) do (2.4)
i:=i+1
K:=0;
f o r i:=1 t o N d o
if A [ i ] = X t h e n
begin
K:=K+1;
B[K]:=i; (2.5)
end
max:=A[1];
f o r i:=2 t o N d o
if A [ i ] > m a x t h e n (2.6)
max:=A[i];
max:=A[1]; K:=1;
f o r i:=2 t o N d o
if A [ i ] > m a x t h e n (2.7)
begin
rnax:=A[i];
K:=i;
end;
f o r i:=1 t o N-1 d o
begin
K:=I; MAX:=A[I];
FOR J : = I + 1 TO N D O
(2.8)
END;
A[K]:=A[I]; A[I]:=MAX;
END;
FOR I : = 1 TO N - 1 DO
FOR J : = 1 TO N - I D O
IF A [ J ] < A [ J + 1 ] THEN
BEGIN
X:=AJJ]; (2.9)
A[J]:=AD+1];
A[J+1]:=X;
END;
P:=TRUE; K:=N-1;
WHILE P = T R U E D O
BEGIN
P:=FALSE; R:=K;
FOR J : = 1 TO R D O
IF A [ J ] < A [ J + 1 ] THEN
BEGIN
X:=A[J]; (2.Ю)
A[J]:=AD+1];
A[J+1]:=X;
P:=TRUE;
K:=J;
END;
END;
285
else
if A[m]>X then (2.11)
L:=m+1
else
R:=m-1;
end;
L=1; R:=N;
while (L<R) do
begin
m:=(R+L) div 2;
if A[m]>X then
L:=m+1 (2.12)
else
R:=m;
end;
if a[R]=X then
p:=true
else
p:=false
for i:=2 to n d o
begin
r:=i; l:=1;
while (l<r) do
begin
m:=(l+r) div 2;
if a[m]>a[i] then
l:=m+1 (2.13)
else
r:=m;
end;
k:=r; x:=a[i];
for j:=i d o w n t o k+1 do
aD]:=aD-1];
a[k]:=x;
end;
if a m o d b = 0 then
р:='Делится' (3-1)
else
p:='He д е л и т с я ' ;
р:='Простое';
B[1]:=1; B[2]:=a;
К:=2;
f o r i:=2 t o a-1 do
if a m o d i = 0 t h e n ( - )3 2
begin
K:=K+1;
B[K]:=i;
287
р:='составное';
end;
р:='простое';
for i:=2 t o t r u n c ( s q r t ( a ) ) + 1 d o
if (a m o d i=0) a n d (i<a) t h e n (33)
р:='составное';
р:='простое';
i:=2;
w h i l e ( i < = t r u n c ( s q r t ( a ) ) + 1 ) a n d (a m o d i<>0) d o
i:=i+1; (3.4)
if (a m o d i=0) a n d (i<a) t h e n
р:='составное';
n : = ( n + 1 ) div 2;
B[1]:=2;
for i:=2 t o n d o
B[i]:= 2*i-1;
j:=2;
w h i l e j<=n d o
begin
' J W;
| : = + B
(3.5)
w h i l e i<=n d o
begin
B[i]:=0;
i:=i+B0];
end;
j:=j+1;
w h i l e (B[j3=0) a n d (j<=n ) d o
j:=j+1;
end;
b [ 1 ] : = 2 ; j : = 2 ; i:=3;
w h i l e i<=n d o
begin ( 3 6 )
k:=1;
d:=trunc(sqrt(i))+1;
w h i l e (b[k]<=d) a n d (i m o d b[k]<>0) a n d (k<j) d o
k:=k+1;
if b[k]>d then
begin
b[j]:=i;
j:=j+1;
end;
i:=i+2;
end;
k:=0; d:=2;
while a>1 do
if a mod d=0 then
begin (3.7)
k:=k+1;
B[k]:=d;
a:=a div d;
end
else
if d=2 then
d:=d+1
else
d:=d+2;
while a<>b d o
if a>b then
a:=a-b (3.8)
else
b:=b-a;
nod:=a;
289
к:=0;
while N>=1 d o
begin
k:=k+1;
B[kJ:=N mod 10;
N:= N div 10; (3.10)
end;
k:=0; L:=N;
while L>=1 do
begin
L:=L div 10;
k:=k+1;
end;
m:=k; (3.11)
while N>=1 do
begin
B[k]:=N mod 10;
N:=N div 10;
k:=k-1;
end;
a:=0;
fori:=1 to N do (3.12)
a:=a*10+B[i];
a:=0; r:=1;
for i:=1 to N do
begin (3.13)
a:=a+B[i]*r;
r:=r*10;
end;
k:=0;
while N>=1 do
begin
k:=k+1; (3.14)
B[k]:=N mod p;
N:=N div p;
end;
s:=0; г:=1;
for i:=1 t o N d o
begin (3.15)
s:=(s+B[i]*r) m o d m ;
r:=r*10 m o d m
end;
if N>M t h e n
K:=N
else
K:=M;
K:=K+1;
for i:=1 t o К d o
C[i]:=0;
for i:=1 t o К d o
begin
C[i]:=A[i]+B[i]+C[i];
if C [ i ] > = 1 0 t h e n (3.16)
begin
C[i+1]:=C[i+1]+1;
C[i]:=C[i] m o d 1 0 ;
end;
end;
if C[K]=0 t h e n
K:=K-1;
for i:=1 t o N d o
C[i]:=0;
for i:=1 t o N d o
begin
C[i]:=A[i]-B[i];
if C[i]<0 t h e n
begin (3.17)
C[i]:=C[i]+10;
C[i+1]:=C[i+1]-1;
end;
end;
w h i l e C[N]=0 d o
N:=N-1;
291
K:=M+N;
for i:=1 to К d o
C[i]:=0;
for i:=1 t o M d o
for j:=1 t o N d o
C[i+j-1]:=Crj]*B[i]+C[i+j-1];
for i:=1 t o к d o (3.18)
begin
C[i+1]:=C[i+1]+C[i] div 10;
C[i]:=C[i] m o d 1 0 ;
end;
w h i l e C[k]=0 d o
K:=K-1;
S[0]:=0;
fori:=1 to N d o (4.1)
S[il:=S[i-1]+a[i];
S[0]:=1;
a[0]:=1;
for i о т 1 t o N d o (4- 2)
begin
a[i]:=a[i-1]/x;
S[i]:=S[i-1]+a[i];
end;
F[0]:=1;
F[1]:=1;
for i:=2 t o N d o (4. 3 )
F[i]:=F[M]+F[i-2];
a:=1;
b:=1;
for i:=2 to N d o (4. 4)
begin
c:=b+a;
a:=b;
b:=c;
end;
Р[0]:=1;
for i:=1 t o N d o (4. 5)
P[i]:=P[i-1]*a[i];
B[1,1]:=A[1,1];
forj:=2to6do
K[1]:=1;
K[2]:=2;
fori:=3to10do (4. 7)
K[i]:=K[i-1]+K[i-2];
B[1,1]:=a[1,1];
for j:=2 t o 6 d o
B[1,j]=A[1J];
for i:=2 t o 5 d o
B[i,1]=A[«,1];
for i:=2 t o 5 d o
for\:=2 to 6 do
if A[i j ] = 1 t h e n
begin
B[i,j]=min(B[i,j-1],B[i-1J]);
B[i,j]=min(B[i,j],B[i-1j-1])+1;
end
else
B[ij]:=0;
T[0,0]:=0;
for j : - 1 t o 16 d o
T[0,j]=0;
for i:=1 t o 5 d o (4. 9)
T[i,0]=0;
293
for i:=1 TO 5 D O
FOR J - 1 TO 1 6 do
if j > = M [ i ] t h e n
T[i,j]=max(T[M j],T[i-1 ,j-M[i]]+C[i])
else
Ttij]=T[i-1,ji;
for t:-Q TO N D O
p[']:=i;
WHILE p[0]=0 D O
BEGJN
FOR i:=1 TO n d o
write(p[i]:3);
writeln;
J:=N;
w h i l e p[j-1]>p[j] d o
j:=j-1;
k:=N;
w h i l e pQ-1]>p[k] d o
k:=k-1;
d:=pQ-1];
PD-1]:=p[k];
P[k]:=d;
for i:=j t o n d o
r[i]:=p[N-<i-j)];
for i:=j t o n d o
P[']:=r[i];
end;
for i;=1 TO m d o
b[i]:=i;
repeat
for i:=1 t o m d o
write(b[i]:3);
writeln;
j:=m;
w h i l e (J>0) a n d (bD]>=n+j-m) d o
j:=j-1;
if j<>0 t h e n
begin
ьШ:=ьш+1;
for k:=j+1 t o m d o
b[k]:=b[k-1]+1;
end;
until |=0;
for i:=0 t o m d o
A[i]:=0;
w h i l e A[m]=0 d o
begin
i:=0;
A[0]:=A[0]+1;
w h i l e (A[i]=n) a n d (A[m] = 0) d o
begin
A[i]:=0;
A[i+1]:=A[i+1]+1;
i:=i+1; (5.3)
end;
for i:=m-1 d o w n t o 0 d o
write(A[i]/ ');
writeln;
end;
w h i l e B[n]=0 d o
begin
i:=0;
while (B[i]=1)do
begin
B[i]:=0;
i=i+1; (5-4)
end;
B[i]:=1;
for i:=0 t o n-1 d o
write(B[i],'');
writeln;
end;
summa:=0;
for i:=1 t o n d o
summa :-summa+a[i]
295
otvet:='H.eT р е ш е н и я '
if s u m m a mod 2 = 1 t h e n
writelnfHeT решения')
else
begin
s u m m a : = s u m m a div 2;
for i:=1 t o n-1 d o
for j:=i+1 to n d o
if a[i]<aQ] then
begin
k:=a[i];
а[П:=аП];
aD]:=k;
end;
st[0]:=1;
st[1]:=1;
s:=a[1];
i:=st[1]+1;
if a[1]>summa then
begin
otvet:='HeT р е ш е н и я ' ;
st[1]:=0;
end;
if a[1]=summa then
begin
otvet:='ecTb решения';
writeln(a[1]);
end:
while (st[1]=1) and ( o t v e t = ' H e T решения') d o
begin
while (i<=n) and ( o t v e t - ' н е т решения') d o
begin {while}
s:=s+a[i];
if s = s u m m a then
begin
writeln;
writelnfpeujeHMe:');
for j:=1 to s t a c k [ 0 ] d o
write(a[stackfj]]'8);
writeln(a[i]:8);
writeln(ss,' ',s);
halt;
end
else
begin
if s < s u m m a t h e n
begin
st[0]:=st[0]+1;
st[st[0]]:=i;
end
else
s:=s-a[i];
i:=i+1;
end;
e n d ; {while}
i:=st[st[0]]+1;
s:=s-a[st[st[0]]];
st[0]:=st[0]-1;
end; { stack[1]}
writeln;
writeln('HeT р е ш е н и я . ' ) ;
end; {else}
СОДЕРЖАНИЕ
От авторов
298
§ 5*. Другие виды сортировок . . 81
5.1. Сортировка вставками —
5.2. Сортировка слияниями 83
Задачи для повторения 85
Задачи повышенной сложности 90
Задачи для самостоятельного решения 94
Указания к решению задач повышенной сложности . . . 98
299
Задачи для повторения 195
Задачи повышенной сложности 198
Задачи для самостоятельного решения 202
Указания к решению задач повышенной сложности . . . 208
ИНФОРМАТИКА
Методы алгоритмизации
Учебное пособие для 8—9 классов
общеобразовательной школы
с углубленным изучением информатики
с русским языком обучения
Редактор Н. Г. Левчук. Художественный редактор Л. В. Павленко.
Технический редактор С. И. Лицкевич. Корректоры 3. Н. Гришели,
С. А. Янович.
Сдано в набор 29.08.2000. Подписано в печать 16.10.2000. Бумага
офсетная № 1. Формат 8 4 Х М 8 ' / з 2 . Гарнитура литературная. Высокая
печать с ФПФ. Усл.-печ. л. 15,96. Усл. кр.-отт. 16,38. Уч.-изд. л. 12,12.
Тираж 28 100 экз. Заказ 1566.
Налоговая льгота — Общегосударственный классификатор Республики
Беларусь ОКРБ-98, ч. 1; 22.11.20.100.
Издательское республиканское унитарное предприятие «Народная
асвета» Государственного комитета Республики Беларусь по печати.
Лицензия ЛВ № 4 от 08.09.2000. 220600, Минск, проспект Маше-
рова, 11.
Республиканское унитарное предприятие «Полиграфический комбинат
имени Я. Коласа». 220600, Минск, Красная, 23.
К о т о в В. М. и д р .
К95 И н ф о р м а т и к а . М е т о д ы а л г о р и т м и з а ц и и : Учеб.
пособие д л я 8—9-х к л . о б щ е о б р а з о в а т . шк. с
у г л у б л . и з у ч е н и е м и н ф о р м а т и к и с рус. я з ы к о м
о б у ч е н и я / В. М . К о т о в , И. А. В о л к о в , А. И. Л а п о . —
Мн.: Н а р . а с в е т а , 2 0 0 0 . — 3 0 0 с : ил.
I S B N 985-12-0259-2