Первый пират лжёт(второй сказал про 30 кладов, третий - про 26). 1)Остальные пираты говорят правду(кладов или 30, или 26). Раз 1 сказал правду, а оба солгали, то у них 6 + 4*2 = 14 кладов. Всех кладов у пиратов x, у остальных x-14 Раз остальные говорят правду, то (x-14) mod 6=0 14 mod 6 = 2 x mod 6 = 2 26 mod 6 = 2, т. е. пиратов 3 + (26-14)/6 = 5 2)Пираты солгали Следовательно, лгали все, тогда пиратов может быть сколько угодно(?), лишь бы кладов было ровно в 4 раза больше. Я думаю, первое решение подойдёт лучше
Var ar:array[1..n] of integer; k1,i,c,k2,k3:integer; begin randomize; writeln('First array:'); for i:=1 to n do begin ar[i]:=random(9)-3; write(ar[i]:4); end; writeln; write('Enter index 1:'); readln(k1); write('Enter index 2:'); readln(k2); if (ar[k1]>0) and (ar[k2]>0) then begin c:=ar[k1]; ar[k1]:=ar[k2]; ar[k2]:=c; end else begin write('Enter index 3:'); readln(k3); c:=ar[1]; ar[1]:=ar[k3]; ar[k3]:=c; end; writeln('Final array:'); for i:=1 to n do write(ar[i]:4); end.
Пример работы программы: First array: -1 -1 1 -1 0 -1 -2 -2 5 -2 Enter index 1:9 Enter index 2:1 Enter index 3:7 Final array: -2 -1 1 -1 0 -1 -1 -2 5 -2
1)Остальные пираты говорят правду(кладов или 30, или 26).
Раз 1 сказал правду, а оба солгали, то у них 6 + 4*2 = 14 кладов.
Всех кладов у пиратов x, у остальных x-14
Раз остальные говорят правду, то (x-14) mod 6=0
14 mod 6 = 2
x mod 6 = 2
26 mod 6 = 2, т. е. пиратов 3 + (26-14)/6 = 5
2)Пираты солгали
Следовательно, лгали все, тогда пиратов может быть сколько угодно(?), лишь бы кладов было ровно в 4 раза больше.
Я думаю, первое решение подойдёт лучше