1. Даны натуральные числа n и k. Составить программу вычисления выражения
1k+ 2k+ … + nk
Для вычисления указанной суммы целесообразно использовать оператор For с управляющей переменной I, изменяющейся от 1 до n. В теле цикла вычисляется очередное значение y=Ik и накапливается искомая сумма s=s+y.
Var n, k, y, I, s, j: Integer;
Begin
WriteLn (‘Введите n и k ‘);
ReadLn (n, k);
s: = 0;
For i: = 1 To n Do Begin
y: = 1;
For j: = 1 To k Do y: = y*i;
s: = s + y
End;
WriteLn (‘Сумма: ‘ , s)
End.
2. Сложим все цифры какого-либо числа. Получим новое число, равное сумме всех цифр исходного числа. Продолжим этот процесс до тех пор, пока не получим однозначное число (цифру). Оно называется цифровым корнем исходного числа. Например, цифровой корень числа 34697 равен 2(3+4+6+9+7=29; 2+9=11; 1+1=2). Составьте программу нахождения цифрового корня натурального числа.
Var n, k, s: LongInt;
Begin
WriteLn (‘Введите число‘); ReadLn (n);
s: = n;
While s>9 Do Begin
k : = s ; s : = 0;
Repeat
s : = s + k mod 10;
k : = k div 10
Until k = 0
End;
WriteLn (‘Цифровой корень числа ‘,n,’ равен ‘,s)
End.
3. Старинная задача. Сколько можно купить быков, коров и телят, если бык стоит 10 рублей, корова – 5 рублей, теленок – полтинник (0,5 рубля), при условии, что на 100 рублей надо купить 100 голов скота.
Решение: обозначим через b – количество быков, k – количество коров, t – количество телят. После этого можно записать два уравнения:
Сколько раз будет проверяться условие в данной программе (сколько раз будет выполняться оператор If)? Переменная b принимает 11 различных значений (от 0 до 10), для каждого значения переменной b переменная k изменяется от 0 до 20, а для каждого значения переменной k переменная t изменяется от 0 до 200.
Таким образом, условие будет проверяться 11 · 21 · 201 = 46431 раз. Но если известно количество быков и коров, то количество телят можно вычислить по формуле
t = 100 – (b + k)
и цикл по переменной t можно исключить.
Program My 9_3;
Var b, k, t: Integer;
Begin
For b: = 0 To 10 Do
For k: = 0 To 20 Do Begin
t: = 100 – (b + k) ;
If (20*b+10*k+t=200) Then WriteLn ( ‘быков ‘ ,b, ‘ коров ‘ ,k, ‘ телят ‘ ,t)
End
End.
В этой программе условие повторяется 11 · 21 = 231 раз. Попробуйте еще уменьшить количество проверок.
4. Написать программу, которая находит все четырехзначные числа abcd (a, b, c, d – цифры числа, причем все они различны), для которых выполняется условие:
ab – cd = a + b + c + d
Другими словами, разность чисел, составленных из старших цифр числа и из младших, должна быть равна сумме цифр числа.
Эту задачу можно решать разными способами. Например, можно перебирать все четырехзначные числа и проверять выполнение условия. Попробуем сократить перебор: из равенства
10 · a + b – (10 · c + d) = a + b + c + d
получаем
9 · (a – c ) = 2 · (c + d)
или (a – c) / (c + d) = 2 / 9,
a = c + 2, d = 9 – c и 0 ≤ c ≤ 7.
Var a, b, c, d: Integer;
Begin
For c: = 0 To 7 Do Begin
a: = c + 2; d: = 9 - c;
For b: = 0 To 9 Do
If (b<>c) and (b<>a) and (b<>d) Then WriteLn (a, b, c, d)
End
End.
5. Дано натуральное число, кратное 3. Найдем сумму кубов цифр данного числа. Получим новое число. Применим к нему такое же преобразование и т.д. Оказывается, что любая последовательность чисел сходится к числу 153.
Program My 9_5;
Var n, m, t, s, q: LongInt;
Begin
WriteLn (‘Введите число, оно умножается на 3, далее для полученного
числа строится последовательность ‘);
ReadLn (n);
m: = 3 * m; Write (m, ‘ ‘ );
Repeat
s : = 0; t : = m;
While m > 0 Do Begin
q: = m mod 10;
s: = s + q * q * q;
m: = m div 10
End;
m: = s;
Write (m, ‘ ‘ )
Until m = t;
ReadLn
End.
Массивы
Одним из важных инструментов программиста является возможность работы с массивами переменных.
Массив - набор однотипных данных, хранящихся вместе и имеющих общее имя.
Возможность объединения групп элементов в массив позволяет, с одной стороны, облегчить массовую обработку данных, а с другой - упростить идентификацию элементов массива.
Каждому элементу массива может быть присвоено одно числовое или символьное значение, поэтому различаются массивы числовые и символьные. Кроме того, массивы могут быть одномерными и многомерными.