ВУЗ:
Составители:
Рубрика:
109
10. Вычислите y=1
1
+2
2
+3
3
+4
4
+...+n
n
.
Пример 10.20. Дано натуральное число n. Найти сумму цифр этого числа.
Решение. Воспользуемся информацией главы 8 «Линейные алгоритмы» о том,
что для определения последней цифры числа нужно найти остаток от деления
этого числа на 10, а для отбрасывания этой цифры - найти частное от деления
целых чисел (операция div). В этом примере заранее неизвестно количество
выполнений цикла, но существует одна причина его окончания - цифры числа n
закончились,
поэтому этот цикл итерационный. Переменной этого цикла является
переменная, где хранится значение числа n, которое уменьшается от шага к шагу
на одну цифру, а когда все цифры закончатся, закончится и цикл.
{ фрагмент 23 }
s:=0; { сумма цифр числа n }
while n>0 do { пока есть цифры в числе n }
begin s:=s+n mod 10; { прибавить последнюю цифру к сумме }
n:=n div 10 { отбросить последнюю цифру }
end.
Пример 10.21. Дано натуральное число n. Выяснить, входит ли цифра 2 в
запись этого числа.
Решение. В теле цикла повторяются те же операции (найти и проанализировать
последнюю цифру, отбросить ее), что и в предыдущем примере. Однако причин
окончания цикла может быть две: цифра 2 входит в запись числа n и цифра 2 не
входит в запись этого числа. Следовательно, этот цикл должен быть построен как
поисковый с проверкой каждой
из двух причин его окончания.
{ фрагмент 24 }
f:=false;
while (n>0) and not f do
if n mod 10 =2 then f:=true else n:=n div 10;
if f then write('цифра 2 входит в число ')
else write('цифра 2 НЕ входит в запись числа').
Пример 10.22. Дано натуральное число n. Поменять порядок цифр числа n на
обратный.
Решение. Например, для n=1829 должно получиться m=9281. Здесь
используются те же операции, что и в примерах 10.20 и 10.21. Но последовательно
получаемые цифры числа не отбрасываются, а результат m домножается на 10 и
цифра прибавляется к результату. Цикл выполняется до тех пор, пока есть цифры в
исходном числе.
{ фрагмент 25 }
m:=0; { в начале результата нет }
while n>0 do
begin m:=m*10+n mod 10;
n:=n div 10
end.
Пример 10.23. Вычислить
y = n!! =
n если n - не кратно двум,
n, если n - кратно двум.
135
246
⋅⋅⋅⋅
⋅⋅⋅⋅
⎧
⎨
⎩
... ,
...
109
10. Вычислите y=11+22+33+44+...+nn.
Пример 10.20. Дано натуральное число n. Найти сумму цифр этого числа.
Решение. Воспользуемся информацией главы 8 «Линейные алгоритмы» о том,
что для определения последней цифры числа нужно найти остаток от деления
этого числа на 10, а для отбрасывания этой цифры - найти частное от деления
целых чисел (операция div). В этом примере заранее неизвестно количество
выполнений цикла, но существует одна причина его окончания - цифры числа n
закончились, поэтому этот цикл итерационный. Переменной этого цикла является
переменная, где хранится значение числа n, которое уменьшается от шага к шагу
на одну цифру, а когда все цифры закончатся, закончится и цикл.
{ фрагмент 23 }
s:=0; { сумма цифр числа n }
while n>0 do { пока есть цифры в числе n }
begin s:=s+n mod 10; { прибавить последнюю цифру к сумме }
n:=n div 10 { отбросить последнюю цифру }
end.
Пример 10.21. Дано натуральное число n. Выяснить, входит ли цифра 2 в
запись этого числа.
Решение. В теле цикла повторяются те же операции (найти и проанализировать
последнюю цифру, отбросить ее), что и в предыдущем примере. Однако причин
окончания цикла может быть две: цифра 2 входит в запись числа n и цифра 2 не
входит в запись этого числа. Следовательно, этот цикл должен быть построен как
поисковый с проверкой каждой из двух причин его окончания.
{ фрагмент 24 }
f:=false;
while (n>0) and not f do
if n mod 10 =2 then f:=true else n:=n div 10;
if f then write('цифра 2 входит в число ')
else write('цифра 2 НЕ входит в запись числа').
Пример 10.22. Дано натуральное число n. Поменять порядок цифр числа n на
обратный.
Решение. Например, для n=1829 должно получиться m=9281. Здесь
используются те же операции, что и в примерах 10.20 и 10.21. Но последовательно
получаемые цифры числа не отбрасываются, а результат m домножается на 10 и
цифра прибавляется к результату. Цикл выполняется до тех пор, пока есть цифры в
исходном числе.
{ фрагмент 25 }
m:=0; { в начале результата нет }
while n>0 do
begin m:=m*10+n mod 10;
n:=n div 10
end.
Пример 10.23. Вычислить
⎧1 ⋅ 3 ⋅ 5⋅...⋅n, если n - не кратно двум,
y = n!! = ⎨
⎩2 ⋅ 4 ⋅ 6⋅...⋅n, если n - кратно двум.
Страницы
- « первая
- ‹ предыдущая
- …
- 105
- 106
- 107
- 108
- 109
- …
- следующая ›
- последняя »
