Из города А можно попасть в города B-2, C-4, D-8, F-16.
16 - многовато. Поищем другие пути.
Если учесть, что мне не возвращаемся в посещенные точки, то всего можно насчитать 7 путей:
A-F = 16A-C-D-E-F = 17A-B-D-F = 8A-D-E-F = 18A-D-F = 11A-B-D-E-F = 15A-C-D-F = 10Оставляем только пути, которые проходят через точку E:
A-C-D-E-F = 17A-D-E-F = 18A-B-D-E-F = 15Рассчитывая стоимость путей, получаем, что минимальная длина пути = 15. (путь A-B-D-E-F).
ответ: 15
Если ответ устроил, то не забудь отметить его как "Лучший".
Посчитаем количество раз, когда встречается каждая цифра в исходном числе. Тогда ответ – либо все цифры, расположенные в порядке возрастания (если в исходном числе не было нулей), либо сначала одна наименьшая цифра, потом все нули, потом все остальные цифры в порядке возрастания.
С++:
#include <iostream>
int main() {
int count[10];
char digit;
for (digit = 0; digit < 10; digit++) {
count[digit] = 0;
}
while (std::cin.get(digit)) {
digit -= '0';
if ((digit < 0) || (digit > 9)) {
break;
}
count[digit]++;
}
digit = 1;
while (count[digit] == 0) {
digit++;
}
std::cout << int(digit);
count[digit]--;
for (digit = 0; digit < 10; digit++) {
for (int i = 0; i < count[digit]; i++) {
std::cout << int(digit);
}
}
return 0;
}
Пример ввода: 11111111112345678098765422
Пример вывода: 10111111111222344556677889
const N=30;
var a: array [1..N] of integer;
i,j,s: integer;
begin
for i:=1 to N do readln(a[i]);
for i:=1 to N do
if (a[i]>99)and(a[i]<1000) then
if (a[i] mod 2)<>0 then
begin
s:=s+a[i];
j:=j+1;
end;
if j=0 then writeln('в массиве нет нечётных трехзначных чисел')
else writeln('среднее арифметическое нечётных трехзначных чисел: ',s/j);
end.
задача 2
const N=40;
var a: array [1..N] of integer;
i,x,y: integer;
s: real;
begin
for i:=1 to N do readln(a[i]);
x:=abs(a[1]);
for i:=1 to N do
if (a[i]>0)and((a[i] mod x)=0) then
begin
y:=y+1;
s:=s+a[i];
end;
if y=0 then writeln('в массиве нет нечётных трехзначных чисел')
else writeln('среднее арифметическое положительных чисел кратных первому элементу: ',s/y);
end.
задача 3
const N=30;
var a: array [1..N] of integer;
i,s,m: integer;
begin
for i:=1 to N do readln(a[i]);
m:=a[1];
for i:=2 to N do
if a[i]>m then m:=a[i];
for i:=1 to N do
if a[i]=m then s:=s+1;
if s=1 then writeln('в массиве только один максимальный элемент')
else writeln('число элементов, равных максимальному: ',s-1);
end.