Private static int[] DeleteSomethingInArray(int[] a) { Debug.Assert(a.Length > 1 && a.Any(x => x > 0) && a.Any(x => x < 0)); // это просто проверка, можно удалить или закоментировать if (a.Length == 2) return a;
var max_i = -1; var min_i = -1; for (var i = 0; i < a.Length; i++) { if (a[i] < 0 && (max_i < 0 || a[max_i] < a[i])) max_i = i; if (a[i] > 0 && (min_i < 0 || a[min_i] > a[i])) min_i = i; }
var result = new int[a.Length - Math.Abs(max_i - min_i) + 1];
var j = 0; for (var i = 0; i < a.Length; i++) { if (i <= Math.Min(max_i, min_i) || i >= Math.Max(max_i, min_i)) result[j++] = a[i]; }
return result; }
На всякий случай в заголовках using System; using System.Diagnostics; using System.Linq;
Тут довольно простое задание, которое можно решить просто подбором (найти правильное основание системы, и заодно выяснить что за цифры соответствуют остальным символам).Я объясню немного подробнее логику рассуждений при таком решении. Итак:символ # это 1запись # * это 4запись # @ это 7 Найти, чему равна запись @ * # Для того, чтобы это найти, нам надо узнать основание используемой здесь системы счисления. Обозначим его как x.Вспомним, что основание системы счисления- это целое число не меньше двух (x ≥ 2). Рассмотрим запись числа четыре: (это перевод числа из системы с основанием x в десятичную)Раз запись числа 4 состоит из двух разрядов, значит основание системы не может быть больше четырёх (x≤4).Ведь уже при основании пять (x = 5) вес второго разряда числа был бы равен пяти (), и всё число было бы явно больше четырёх. Далее, рассмотрим запись числа семь: Мы видим, что второй разряд не изменился- здесь тоже стоит единица. А само число увеличилось на три (7 - 4 = 3). Значит, на три увеличилась цифра в первом разряде (была *, стала @). То есть, Итак, основание- это целое число, не меньше двух и не больше четырёх. Подходят всего три числа- 2, 3, 4.В каком из этих оснований системы можно прибавить к цифре три без переноса в следующий разряд?если основание 2 -то есть всего две цифры: 0 и 1если основание 3 -то есть три цифры: 0, 1 и 2если основание 4 -то четыре цифры: 0, 1, 2 и 3Такие цифры используются в одном разряде. И, если при сложении мы выходим за эти цифры, то произойдёт перенос в следующий разряд (чего у нас не было, во втором разряде осталась единица). Получается, что в пределах одного разряда, тройку можно прибавить только в системе с основанием 4, причём только в одном случае (0 + 3 = 3).Значит:символ * это 0символ @ это 3а основание системы счисления равно четырём Осталось перевести запись @ * # из четверичной в десятичную систему счисления:
{
Debug.Assert(a.Length > 1 && a.Any(x => x > 0) && a.Any(x => x < 0)); // это просто проверка, можно удалить или закоментировать
if (a.Length == 2)
return a;
var max_i = -1;
var min_i = -1;
for (var i = 0; i < a.Length; i++)
{
if (a[i] < 0 && (max_i < 0 || a[max_i] < a[i]))
max_i = i;
if (a[i] > 0 && (min_i < 0 || a[min_i] > a[i]))
min_i = i;
}
var result = new int[a.Length - Math.Abs(max_i - min_i) + 1];
var j = 0;
for (var i = 0; i < a.Length; i++)
{
if (i <= Math.Min(max_i, min_i) || i >= Math.Max(max_i, min_i))
result[j++] = a[i];
}
return result;
}
На всякий случай в заголовках
using System;
using System.Diagnostics;
using System.Linq;
Итак:символ # это 1запись # * это 4запись # @ это 7
Найти, чему равна запись @ * #
Для того, чтобы это найти, нам надо узнать основание используемой здесь системы счисления. Обозначим его как x.Вспомним, что основание системы счисления- это целое число не меньше двух (x ≥ 2).
Рассмотрим запись числа четыре:
(это перевод числа из системы с основанием x в десятичную)Раз запись числа 4 состоит из двух разрядов, значит основание системы не может быть больше четырёх (x≤4).Ведь уже при основании пять (x = 5) вес второго разряда числа был бы равен пяти (), и всё число было бы явно больше четырёх.
Далее, рассмотрим запись числа семь:
Мы видим, что второй разряд не изменился- здесь тоже стоит единица. А само число увеличилось на три (7 - 4 = 3). Значит, на три увеличилась цифра в первом разряде (была *, стала @). То есть,
Итак, основание- это целое число, не меньше двух и не больше четырёх. Подходят всего три числа- 2, 3, 4.В каком из этих оснований системы можно прибавить к цифре три без переноса в следующий разряд?если основание 2 -то есть всего две цифры: 0 и 1если основание 3 -то есть три цифры: 0, 1 и 2если основание 4 -то четыре цифры: 0, 1, 2 и 3Такие цифры используются в одном разряде. И, если при сложении мы выходим за эти цифры, то произойдёт перенос в следующий разряд (чего у нас не было, во втором разряде осталась единица).
Получается, что в пределах одного разряда, тройку можно прибавить только в системе с основанием 4, причём только в одном случае (0 + 3 = 3).Значит:символ * это 0символ @ это 3а основание системы счисления равно четырём
Осталось перевести запись @ * # из четверичной в десятичную систему счисления:
ответ: 49