Тернарная операция в C++ - это выражение вида (b ? x : y) (где b - логическое выражение, а x и y - одного типа). Она вернёт x, если выражение b истинно, и y, если b ложно.
В приложении расписаны координаты некоторых клеток, а также помечены точками те, которые по цвету отличаются от не помеченных. Если поискать, что у них общего, можно обнаружить, что у "невыколотых" клеток сумма координат по горизонтали и вертикали - чётная. Это "свойство" и используем для определения цвета клетки.
#include <bits/stdc++.h>
using namespace std;
int main() {
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
cout << ((x1 + y1) % 2 == (x2 + y2) % 2 ? "YES" : "NO") << endl;
return 0;
}
Давай сравним все 4 числа между собой, найдём максимальное и вычтем из него N.
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b, c, d, n;
cin >> a >> b >> c >> d >> n;
if (a > b && a > c && a > d)
a -= n;
else if (b > a && b > c && b > d)
b -= n;
else if (c > a && c > b && c > d)
c -= n;
else d -= n;
cout << a << " " << b << " " << c << " " << d << endl;
return 0;
}
(см. объяснение)
Объяснение:
Программа написана на языке PascalABC.NET:
##
function F(n: integer): integer;
begin
if(n=0) then F:= 0
else if((n>0) and (n mod 2 = 0)) then F:= F(n div 2)+3
else if((n>0) and (n mod 2 <> 0)) then F:= 2*F(n-1)+1;
end;
var a: array of integer;
setLength(a,0);
for var i: integer := 1 to 1000
do if(not a.contains(F(i))) then
begin
setLength(a,a.Length+1);
a[a.Length-1]:= F(i);
end;
print(a.Length);
Задание выполнено!