Дан массив а размерностью n. записать в каждый элемент массива в следующие значения : 1ый элемент - сумма всех нечетных элементов массива а ; 2ои элемент - сумма всех четных элементов массива а : зий элемент - сумма всех элементов массива а
Var A:array[1..1000] of integer; B:array[1..3] of integer; i,N:integer; Begin Write('N = ');ReadLn(N); For i:= 1 to N do Begin Read(A[i]); if A[i] mod 2 <> 0 then B[1]:=B[1]+A[i]; if A[i] mod 2 = 0 then B[2]:=B[2]+A[i]; End; WriteLn; For i:= 1 to N do Write(A[i],' '); B[3]:=B[1]+B[2]; WriteLn('B[1] = ',B[1]); WriteLn('B[2] = ',B[2]); WriteLn('B[3] = ',B[3]); End.
или так:
Var A:array of integer; B:array[1..3] of integer; i,N:integer; Begin Write('N = ');ReadLn(N); A:=new integer[N]; For i:= 0 to N-1 do Begin Read(A[i]); if A[i] mod 2 <> 0 then B[1]:=B[1]+A[i]; if A[i] mod 2 = 0 then B[2]:=B[2]+A[i]; End; WriteLn; For i:= 0 to N-1 do Write(A[i],' '); B[3]:=B[1]+B[2]; WriteLn('B[1] = ',B[1]); WriteLn('B[2] = ',B[2]); WriteLn('B[3] = ',B[3]); End.
Вычисляется сумма цифр первого числа и сумма цифр второго числа. Оба числа двузначны, то есть в каждом числе две цифры. Максимальная цифра в десятичной системе счисления - это 9, то есть сумма двух цифр не может быть больше 18-ти (9+9=18).
Суммы цифр записаны в порядке неубывания, то есть в порядке возрастания, или равенства.
Рассмотрим каждый вариант ответа:
211 - мы можем разделить как суммы 2 и 11, оба этих числа могут быть суммой цифр двузначного числа, т.к. они не больше 18-ти. Например, 20 => 2+0=2, 29 => 2+9=11. Они записаны в порядке возрастания, что подходит под условие задачи.
1717 - можем разделить как 17 и 17, оба числа не больше 18-ти, значит они могут быть суммой цифр двузначного числа. Записаны они не в порядке убывания, что подходит под условие задачи.
1817 - можем разделить как 1 817, 18 17, или 171 7. Варианты 1-817 и 171-7 нам не подходят, т.к. содержат числа, которые больше 18-ти, т.е. такие, которые не могут быть суммой двух цифр. Вариант 18-17 нам так же не подходит, т.к. числа записаны в порядке убывания.
1718 - можем разделить как 17 и 18, оба числа могут быть суммой двух цифр, записаны в порядке возрастания, подходят.
1719 - можем разделить как 1-719, 17-19, 171-9, все три варианта содержат числа, которые больше 18, значит этот вариант нам не подходит.
219 - можем разделить как 2-19 или 21-9, содержат числа, которые больше 18, не подохдят.
21 - можем разделить как 2 и 1, они бы нам подошли (к примеру, сумма цифр в числе 20 равна 2, в числе 10 равна 1), но записаны в порядке убывания (2 1), что не соответствует условию, не подходит.
10 - можем разделить как 1 0, не подходит, т.к. и записаны в порядке убывания, и 0 не может быть суммой цифр двузначного числа.
Получается, нам подходят числа 211, 1717, 1718, всего три числа. ответ 3
// PascalABC.NET 3.2, сборка 1377 от 19.01.2017 // Внимание! Если программа не работает, обновите версию!
begin var s:=ReadlnString('Строка:'); // общая часть // #1 var c1,c2:char; Write('Введите БЕЗ ПРОБЕЛА исходный и заменяющий символы: '); Readln(c1,c2); s:=s.Replace(c1,c2); s.Println; // #2 s:=s.Where(c->not (c in ['0'..'9'])).JoinIntoString; s.Println; // #3 var k:=ReadInteger('k='); s:=s.Batch(k).SelectMany(c->c+NewLine).JoinIntoString(''); s.Println end.
Пример Строка: Площадь Чёрного моря 422000 кв.км, Наибольшая глубина 2210 м, средняя — 1240 м. Введите БЕЗ ПРОБЕЛА исходный и заменяющий символы: гЪ Площадь ЧёрноЪо моря 422000 кв.км, Наибольшая Ълубина 2210 м, средняя — 1240 м. Площадь ЧёрноЪо моря кв.км, Наибольшая Ълубина м, средняя — м. k= 35 Площадь ЧёрноЪо моря кв.км, Наибол ьшая Ълубина м, средняя — м.
A:array[1..1000] of integer;
B:array[1..3] of integer;
i,N:integer;
Begin
Write('N = ');ReadLn(N);
For i:= 1 to N do
Begin
Read(A[i]);
if A[i] mod 2 <> 0 then B[1]:=B[1]+A[i];
if A[i] mod 2 = 0 then B[2]:=B[2]+A[i];
End;
WriteLn;
For i:= 1 to N do
Write(A[i],' ');
B[3]:=B[1]+B[2];
WriteLn('B[1] = ',B[1]);
WriteLn('B[2] = ',B[2]);
WriteLn('B[3] = ',B[3]);
End.
или так:
Var
A:array of integer;
B:array[1..3] of integer;
i,N:integer;
Begin
Write('N = ');ReadLn(N);
A:=new integer[N];
For i:= 0 to N-1 do
Begin
Read(A[i]);
if A[i] mod 2 <> 0 then B[1]:=B[1]+A[i];
if A[i] mod 2 = 0 then B[2]:=B[2]+A[i];
End;
WriteLn;
For i:= 0 to N-1 do
Write(A[i],' ');
B[3]:=B[1]+B[2];
WriteLn('B[1] = ',B[1]);
WriteLn('B[2] = ',B[2]);
WriteLn('B[3] = ',B[3]);
End.