Магічний трикутник і квадрат на сумах мовою
програмування Pascal
1.Дано
числа: 1, 2, 3, 4, 5, 6, 7, 8, 9. Розташуйте їх у кружечках
трикутника так, щоб суми на кожній стороні трикутника були рівними:
а) одному парному числу; б) одному непарному числу; в) трьом послідовним
натуральним числам.
Технічні умови. Програма утворює послідовність, цілі числа
якої послідовно заповнюють кружечки трикутника, починаючи з вершини за часовою
стрілкою, і ці числа розміщуються так, що на кожній стороні трикутника
виконується умова завдання.
Приклад: Починаючи з вершини за часовою стрілкою, числа
розміщуються так: а) 5; 3; 4; 8; 1; 9; 2; 6; 7( на кожній
стороні по 20). б)8; 5; 3; 7; 6; 1;
9; 4; 2; ( на кожній стороні по 23) в) 8; 3;
5; 7; 6; 2; 9; 1; 4(це числа 22,23,24).
Розв′язання. Програма для магічного трикутника з магічною сумою 23
program magic_tpukytnuk;
var a,b,c,d,e,f, h,i, j:
integer; k:boolean;
begin
{for a:=1 to 9 do begin}
a:=9; for b:=1 to 9 do
begin for c:=1 to 9 do begin
{for d:=1 to 9 do begin}
d:=8; for e:=1 to 9 do begin
for f:=1 to 9 do begin
{for h:=1 to 9 do begin}
h:=7; for i:=1 to 9 do begin
for j:=1 to 9 do begin
k:= (a<>b) and
(c<>a) and (a<>d) and (a<>e) and (a<>f) and
(a<>h) and (a<>i) and (a<>j);
k:= k and(c<>b) and
(b<>d) and (b<>e) and (b<>f) and (b<>h) and
(b<>i) and (b<>j);
k:= k and (c<>d) and
(c<>e) and (c<>f) and (c<>h) and (c<>i) and
(c<>j);
k:= k and (d<>e)
and (d<>f) and (d<>h) and (d<>i) and (d<>j);
k:= k and (e<>f) and
(e<>h) and (e<>i) and (e<>j);
k:= k and (f<>h)
and (f<>i) and (f<>j);
k:= k and (h<>i) and
(h<>j);
k:= k and(i<>j);
if k and(a+b+c+d=d+e+f+h)
and (h+i+j+a=d+e+f+h) and (h+i+j+a=a+b+c+d) then
begin
writeln(' a+b+c+d=' ,
a+b+c+d); writeln(' d+e+f+h=' , d+e+f+h);
writeln(' h+i+j+a=' ,
h+i+j+a);
write(' a=', a,
'; '); write(' b=', b, '; '); write('
c=', c, '; ');
write(' d=', d,
'; '); write(' e=', e, '; ');write(' f=', f, ';
');
write(' h=', h,
'; '); write(' i=', i, '; ');write(' j=', j, ';
'); writeln(' ');
end;end; end; end;end;end;end; { end;
end;end;} end.
Приклади, що є результатом виконання
програми - це магічні трикутники з магічною сумою 23
1)a+b+c+d=23, d+e+f+h=23,
h+i+j+a=23, a=9; b=1;
c=5; d=8; e=2; f=6;
h=7; i=3; j=4;
2) a+b+c+d=23, d+e+f+h=23,
h+i+j+a=23, a=9; b=1;
c=5; d=8; e=2;
f=6; h=7; i=4; j=3;
3)a+b+c+d=23, d+e+f+h=23,
h+i+j+a=23, a=9; b=1;
c=5; d=8; e=6;
f=2; h=7; i=3; j=4;
4) a+b+c+d=23, d+e+f+h=23,
h+i+j+a=23, a=9; b=1;
c=5; d=8; e=6;
f=2; h=7; i=4; j=3;
5)a+b+c+d=23, d+e+f+h=23,
h+i+j+a=23, a=9; b=2;
c=4; d=8; e=3;
f=5; h=7; i=1; j=6;
6) a+b+c+d=23, d+e+f+h=23,
h+i+j+a=23, a=9; b=2;
c=4; d=8; e=3;
f=5; h=7; i=6;
j=1;
Утворення магічних
квадратів на сумах мовою Pascal
Задача 1. Записати алгоритм, який виводить на екран випадковий
фрагмент
дев′ятичленної арифметичної прогресії у вигляді магічного квадрату розміром 3х3 з магічною сумою та магічним добутком.
дев′ятичленної арифметичної прогресії у вигляді магічного квадрату розміром 3х3 з магічною сумою та магічним добутком.
Технічні умови. Програма на мові Паскаль випадковим
чином задає два числа: 1)перший член; 2) знаменник для фрагменту арифметичної
прогресії. Члени цієї прогресії, це двоцифрові цілі числа.
Приклад. Виведення результату.
Перший випадковий член арифметичної прогресії: a1 =1
Випадковий знаменник арифметичної прогресії: d =4
Магічна сума магічного квадрату: S=51
Магічний квадрат:
a[1; 1]:=
13 a[1; 2]:= 33 a[1; 3]:=
5
a[2; 1]:=
9 a[2; 2]:= 17 a[2; 3]:=
25
a[3; 1]:=
29 a[3; 2]:= 1 a[3; 3]:=
21
Розв′язання.
Якщо дано два довільних випадкових числа а та d, що задають арифметичну прогресію, то отримаємо
магічний квадратів 3х3 з магічною сумою 3(а+4d). Із одного шаблона 3х3 можна отримати вісім різних
шаблонів магічних квадратів 3х3 на сумах. наводимо приклади тільки двох
шаблонів.
а + 3d
|
а + 8d
|
а + d
|
а + 2d
|
а + 4d
|
а + 6d
|
а + 7d
|
а
|
а + 5d
|
n + 2m
|
n + 7m
|
n + 6m
|
n+ 9m
|
n + 5m
|
n + m
|
n + 4m
|
n + 3m
|
n + 8m
|
ра +
3d gn + 2m
|
ра +
8d gn + 7m
|
ра + d gn + 6m
|
ра +
2d gn+ 9m
|
ра +
4d gn + 5m
|
ра +
6d gn + m
|
ра +
7d gn + 4m
|
ра gn + 3m
|
ра +
5d gn + 8m
|
Останній квадрат можна використати як
шаблон для утворення безлічі квадратів з магічним добутком. При цьому, варто
зазначити, що числа р і g можна
накладити різні умови: простоти, парності, непарності, кратності,
подільності.
Послідовність із дев′яти цілих чисел
задається лінійною формулою: аn=a + d(n-1). Цілі числа а та d задаються
випадковим чином, в межах від -100 <а <100; -100 <d <100. Запишемо алгоритм, який
виводить на екран у вигляді таблиці магічний квадрат розміром
3х3 з магічною сумою 3*(a1+4*d)) для послідовності {an}
program anxn;
program anxn;
const n=3;
var
a: array[1..n,1..n] of integer; c:
array[1..n,1..n] of integer; b: array[1..n*n] of integer;
d,a1, m,k,p,i, l, j:
integer;
begin a1:=round(random*20-10) ; {a1 - перший член арифмет. прогресії}
d:= round(random*20-10); {d - знаменник арифмет. прогресії}
writeln(' ');
writeln(' ');writeln('a1 =',a1); writeln(' d =',d); writeln(' Магічна сума S=',3*(a1+4*d));
a[1,1]:= a1 + 3*d; a[1,2]:=
a1 + 8*d;
a[1,3]:= a1 + 1*d;
a[2,1]:= a1 + 2*d; a[2,2]:= a1 + 4*d; a[2,3]:= a1 + 6*d;
a[3,1]:= a1+ 7*d; a[3,2]:= a1 + 0*d; a[3,3]:= a1 + 5*d;
for i:=1 to n do begin
writeln('');
for j:=1 to n do begin
write('a[',i, '; ',j,']:=
',a[i,j], ' ');
end; {writeln(' ')};
end; end.
Немає коментарів:
Дописати коментар