p = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21]
q = [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
ans = 0
for x in range(30):
if (x in p) and (x in q):
ans += x
print(ans)
Объяснение:
Это логическое выражение, где переменными выступают выражения , и . Обозначим их за , и соответственно. Например, , если , и иначе. У нас получается следующее выражение:
Раскроем импликацию и получим:
Уберём повторяющуюся . Наше финальное выражение:
Таким образом, выражение из условия будет истинно, если число не принадлежит , или не принадлежит , или принадлежит . Множество наименьшего размера будет содержать все числа, которые не удовлетворяют условию , то есть все числа, которые принадлежат и , и .
signed main(){
int n, m;
cin >> n >> m;
vector<vector<int>> a(n, vector<int> (m));
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
cin >> a[i][j];
int col = 0, mx = a[0][0];
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(a[i][j] > mx){
mx = a[i][j];
col = j;
}
}
}
for(int i = 0; i < n; i++)
swap(a[i][0], a[i][col]);
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++)
cout << a[i][j] << " ";
cout << "\n";
}
}