Между населёнными пунктами A, B, C, D, E, F построены дороги, протяжённость которых приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между пунктами нет.) Определите длину кратчайшего пути между пунктами A и F (при условии, что передвигаться можно только по построенным дорогам). (Желательно с объяснением)
javascript: function Пр(ч) { var стр = ч.toString(); for (let сч = 1; сч < стр.length; сч++) { let ч1 = parseInt(стр.substring(0, сч)), ч2 = parseInt(стр.substring(сч)); if (ч1 > ч2) continue; let к1 = Math.sqrt(ч1), к2 = Math.sqrt(ч2); if (к1 == Math.floor(к1)) { for (let сч1 = 1; сч1 < 10 && сч1 < ч2 - 1; сч1++) for (let сч2 = 1; сч2 * сч2 + сч1 * сч1 <= ч2; сч2++) if (сч2 * сч2 + сч1 * сч1 == ч2 && Math.pow(сч1 + сч2, 2) == ч1) return ч + ": " + сч1 + ", " + сч2; } if (к2 == Math.floor(к2)) { for (let сч1 = 1; сч1 < 10 && сч1 < ч1 - 1; сч1++) for (let сч2 = 1; сч2 * сч2 + сч1 * сч1 <= ч1; сч2++) if (сч2 * сч2 + сч1 * сч1 == ч1 && Math.pow(сч1 + сч2, 2) == ч2) return ч + ": " + сч1 + сч2; } }; return ч + ": -"; } [2949, 10, 11, 25, 95, 2036, 3264, 6581].forEach(function (зн) { alert(Пр(зн)); });
begin
SeqGen(10, 6, t -> t + 6).Aggregate(int64(1), (p, q)-> p * q).Println;
SeqGen(25, 7, t -> t + 7).Sum.Println
end.
Результат219419659468800 2275 2) "Школярский вариант"(для тех, у кого учителя в развитии застряли в Паскале образца 1983 года)
var
i, s: integer;
p: real;
begin
p := 1;
for i := 1 to 10 do
p := p * i * 6;
Writeln(p);
s := 0;
for i := 1 to 25 do
s := s + i * 7;
Writeln(s)
end.
3) "Школопетский вариант"(для тех, у кого голова, чтобы "в нее кушать")
var
i, s, n: integer;
p: real;
begin
p := 1;
n := 0;
i := 1;
while n < 10 do
begin
if i mod 6 = 0 then
begin
p := p * i;
Inc(n)
end;
inc(i)
end;
Writeln(p);
s := 0;
n := 0;
i := 1;
while n < 25 do
begin
if i mod 7 = 0 then
begin
s := s + i;
Inc(n)
end;
inc(i)
end;
Writeln(s)
end.