Определите, что будет напечатано в результате выполнения программы:
Program mash;
Vark, m: Integer;
Dat: array[1..10] of integer;
Begin
Dat[1]:= 1; Dat[2]:= 9;
Dat[3]:= 6; Dat[4]:= 5;
Dat[5]:= 4; Dat[6]:= 2;
Dat[7]:= 0; Dat[8]:= 8;
Dat[9]:= 4; Dat[10]:=19;
m = 0;
for k= 5 to 9 do
if Dat[k] > m then
begin
m := Dat[k]
end;
writeln(m);
End.
Код неверный
Объяснение:
Вот код:
Первый (простой, работает медленнее)
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
for(int i = 1; i <= n; i++) {
if(sqrt(i) == (int)sqrt(i))
cout << i << ' ';
}
}
Фактически мы просто для каждого числа проверяем, является ли его квадратный корень целым числом.
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
int x = 1, d = 3;
while(x <= n) {
cout << x << ' ';
x += d;
d += 2;
}
}
Решение основывается на этом утверждении:
Разница между квадратами двух последовательных натуральных чисел больше на 2 разницы между предыдущими двумя квадратами, например:
4 - 1 + 2 = 9 - 4
Доказательство:
Из чего получаем:
Доказано.
const n=10;
var a:array[1..n+1] of integer;
p,i:integer;
begin
Randomize;
writeln('Исходный массив:');
for i:=1 to n do
begin
a[i]:=random(21);
write(a[i]:4);
end;
writeln;
write('p = '); readln(p);
a[n+1]:=p;
i:=1;
while a[i]<>p do i:=i+1;
if i<=n
then writeln('Искомый элемент найден, его номер = ',i)
else writeln('Искомый элемент не найден');
end.
Пример 1:
Исходный массив:
7 17 16 13 0 1 19 20 12 5
p = 13
Искомый элемент найден, его номер = 4
Пример 2:
Исходный массив:
20 4 5 12 14 10 11 16 18 20
p = 15
Искомый элемент не найден