Для заданного положительного вещественного числа \(A\) необходимо найти минимальное целове число \(K\), при котором выполняется неравество \(1+\cfrac{1}{2}+\cfrac{1}{3}+...+\cfrac{1}{K} \geq A\). Для решения этой задачи марафонец написал такую программу.
\[\begin{array}{|l|l|l|} \hline Python&C++&Pascal\\ \hline a=float(input())&\#include \; <iostream>&var\;a,s:\;real;\\ k=0&using\;namespace\;std;&\quad k: \; integer;\\ s=1&int\;main()\; \{& begin\\ while \; s>=a:&\quad double \; a, s;&\quad read(a);\\ \quad k=k+1&\quad int \; k;&\quad k:=0;\\ \quad s=s+1.0/k&\quad cin>>a;&\quad s:=1;\\ print \; (k)&\quad k=0;&\quad while \; s>=a \; do\; begin\\ &\quad s=1;&\quad \quad k:=k+1;\\ & \quad while \; (s>=a) \; \{ & \quad \quad s:=s+1.0/k;\\ & \quad\quad k++;&\quad end;\\ & \quad\quad s=s+1.0/k; &\quad write(k);\\ & \quad \} & end.\\ & \quad cout<<k<<endl;&\\ & \quad return \; 0;&\\ & \}&\\ \hline \end{array}\]
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 1.5.
2. Сколько существует натуральных чисел \(a\), при вводе которых программа выведет ответ 1?
3. Найдите в программе все ошибки (их может быть одна или несколько).
Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде. Обратите внимание: нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы снижаются.
1. При вводе числа 1.5 программы выведет 0, так как не будет выполняться \(s>=a\).
2. Ответ: 0. В данной программе при вводе \(a>1\), программа не запускает цикл, а при \(a\leq1\) происходит зацикливание.
3. Приведем решение задания на языке С++:
Ошибочная строка: \(s=1;\)
Исправленная строка: \(s=0;\)
Ошибочная строка: \(while \; (s>=a)\) {
Исправленная строка: \(while \; (s<a)\) {
Ответ: См. решение