LAxPiet
11.07.2020 08:13

Дан следующий ряд чисел 7,27, 47,67а'n где а'n-значение последнего члена ряда требуется вычислить сумму всех N значений ряда. входные данны
ввходной файл INPUT.TXT содержит одно натуральное число n (1<n<10'9)
Выходные данные
В выходной файл OUTPUT.TXT выведите целое число-сумма всех n значений ряда.
Примеры​
УМОЛЯЮ


Дан следующий ряд чисел 7,27, 47,67а'n где а'n-значение последнего члена ряда требуется вычислить су

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
zvarichevgenija
09.12.2022 01:51
Предлагается хранить типы блоков в массиве. Каждый элемент - 2Б, количество элементов - 2^20 => всего требуется 2МБ.

При перезаписи блока и очередной переоценке необходимо учитывать типы данных в блоке до перезаписи (T0), после перезаписи (T1) и в соседних блоках (TL, TR).

Если T0 = T1, то количество кусков данных не изменяется, т.е. W[i+1] = W[i]
TL = T0 = TR <> T1 -> W[i+1] = W[i] + 2
TL = T1 = TR <> T0 -> W[i+1] = W[i] - 2
TL = TR, T0 <> TL, T1 <> TL -> W[i+1] = W[i]

Далее рассмотрим случаи, когда TL <> TR
(TL = T0, TR = T1) или (TR = T0, TL = T1) -> W[i+1] = W[i]
(TL = T0, TR <> T1) или (TR = T0, TL <> T1) -> W[i+1] = W[i] + 1
(TL = T1, TR <> T0) или (TR = T1, TL <> T0) - > W[i+1] = W[i] - 1

Если все четыре типа не совпадают, то W[i+1] = W[i]
Если перезаписывается блок с адресом 0, считать, что тип TL не совпадает ни с одним из трех других.Аналогично при перезаписи блока с адресом , но для TR.

Вроде все?
0,0(0 оценок)
Ответ:
khludenev99
20.08.2021 06:40
Ну вот как-то так, если что-то не ясно - спрашивай. Инициализации начальных элементов нет, так что без соответствующей правки она не заработает.

int main() {
    // Something
    int a[n][m];
    // Init

    // Находим максимум
    int im = 0, jm = 0, max = a[0][0];
    for (int i = 0 ; i < n; ++i)
        for (int j = 0; j < m; ++j)
            if (a[i][j] > max) {
                max = a[i][j];
                im = i;
                jm = j;
            }

    // Двигаем максимум вниз
    swapCollumn(a, n, m, im, n-1);
    swapRow(a, n, m, jm, m-1);

}

//Премещаем 2 столбца местами
void swapCollumn(int ** a, int n, int m, int c1, int c2) {
    if (c1 < 0 || c2 < 0 || c1 >= n || c2 >= n)
        return;
    for (int i = 0; i < m; ++i)
        swap(&a[c1][i], &a[c2][i]);
}

//Перемещаем 2 строки местами
void swapRow(int ** a, int n, int m, int r1, int r2) {
    if (r1 < 0 || r2 < 0 || r1 >= m || r2 >= m)
        return;
    for (int i = 0; i < n; ++i)
        swap(&a[i][r1], &a[i][r2]);
}

void swap(int * el1, int el2) {
    int t = *el1;
    *el1 = *el2;
    *el2 = *el1;
}
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота