Рассмотрим первый тест. Мы знаем, что карточки пронумерованы от 1 до N, и что утеряна была ровно одна карточка. Пусть x равен сумме номеров всех карточек от 1 до N. Тогда y равен сумме номеров карточек, что даны нам во вводе. Значит, номер потерявшейся карточки - это x - y
x = 1 + 2 + 3 + 4 + 5 = 15
y = 3 + 5 + 1 + 4 = 13
ans = x - y = 15 - 13 = 2, ответ: 2.
Правда, тогда придется "угадать" тест, где N равно единице, поскольку мы используем do-while для ввода. Логично, что в наборе из одной карточки могла потеряться только эта единственная карточка.
Рассмотрим первый тест. Мы знаем, что карточки пронумерованы от 1 до N, и что утеряна была ровно одна карточка. Пусть x равен сумме номеров всех карточек от 1 до N. Тогда y равен сумме номеров карточек, что даны нам во вводе. Значит, номер потерявшейся карточки - это x - y
x = 1 + 2 + 3 + 4 + 5 = 15
y = 3 + 5 + 1 + 4 = 13
ans = x - y = 15 - 13 = 2, ответ: 2.
Правда, тогда придется "угадать" тест, где N равно единице, поскольку мы используем do-while для ввода. Логично, что в наборе из одной карточки могла потеряться только эта единственная карточка.
КодДан в приложении.
Program fantscrin;
const n = 15;
const m = 10;
Var x: array [1..n] of real;
y: array [1..n] of real;
z: array [1..n+m] of real;
i,e_1,e_2,g:integer; s,p,min:real;
Begin
for i:=1 to n do
x[i]:=random(20)-10;
for i:=1 to m do
y[i]:=random(10)-5;
for i:=1 to n do
write(x[i],' ');
s:=0;
for i:=1 to n do
if(i mod 2 <> 0) then s:=s+x[i];
for i:=1 to n do
if (x[i] < 0) then
begin
e_1:=i;
break;
end;
for i:=n downto 1 do
if (x[i] < 0) then
begin
e_2:=i;
break;
end;
p:=1;
for i:=e_1 to e_2 do
p:=p*x[i];
for i:=1 to n do
z[i]:=x[i];
for i:=1 to m do
z[n+i]:=y[i];
min:=z[1];
g:=1;
for i:=2 to n+m do
if (z[i] < min) then
begin
min:=z[i];
g:=i;
end;
writeln('');
writeln('1. : ',s);
writeln('2. : ',p);
for i:=1 to m do
write(y[i],' ');
writeln('');
for i:=1 to n+m do
write(z[i],' ');
for i:=g to n+m-1 do
z[i]:=z[i+1];
z[n+m]:=0;
writeln('');
writeln(g);
for i:=1 to n+m-1 do
write(z[i],' ');
End.