
Вопрос задан 27.06.2023 в 16:16.
Предмет Информатика.
Спрашивает Федосеева Алина.
Прошу помощи, пожалуйста, нужно программу на с++ перевести var rem : array[0..11] of integer; N,
i, x : integer; m : longint; begin for i := 0 to 11 do rem[i] := 0; readln(N); for i := 1 to N do begin readln(x); inc(rem[x mod 12]) end; m := (rem[0] * (rem[0] - 1) + rem[6] * (rem[6] - 1)) div 2; for i := 1 to 5 do m := m + rem[i] * rem[12 - i]; writeln(m) end. Дан набор из N натуральных чисел. Необходимо определить количество пар элементов ( a i , a j ) этого набора, в которых 1 ≤ i < j ≤ N и сумма элементов кратна 12. Напишите эффективную по времени и по памяти программу для решения этой задачи. Программа считается эффективной по времени, если при увеличении количества исходных чисел N в k раз время работы программы увеличивается не более чем в k раз. Программа считается эффективной по памяти, если память, необходимая для хранения переменных программы, не превышает одного килобайта и не увеличивается с ростом N . Описание входных и выходных данных В первой строке входных данных задаётся количество чисел N ( 1 ≤ N ≤ 10000 ). В каждой из последующих N строк записано одно натуральное число, не превышающее 1000. Пример входных данных: 5 7 5 6 12 24 Пример выходных данных для приведённого выше примера входных данных: 2 В приведённом наборе из 5 чисел имеются две пары ( 5 , 7 ) , ( 12 , 24 ) , сумма элементов которых кратна 12.

Ответы на вопрос

Отвечает Дичко Анюта.
#include <iostream>
using namespace std;
int main() {
int rem[12];
int N, i, x;
unsigned __int64 m;
for (i = 0; i < 12; i++) {
cin >> x;
rem[x % 12]++;
}
m = (rem[0] * (rem[0] - 1) + rem[6] * (rem[6] - 1)) / 2;
for (i = 1; i <= 5; i++) {
m = m + rem[i] * rem[12 - i];
}
cout << m;
return 0;
}



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для решения данной задачи на C++ вы можете использовать следующий код:
cpp#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> rem(12, 0);
for (int i = 0; i < N; i++) {
int x;
cin >> x;
rem[x % 12]++;
}
long long m = (1LL * rem[0] * (rem[0] - 1) + 1LL * rem[6] * (rem[6] - 1)) / 2;
for (int i = 1; i <= 5; i++) {
m += 1LL * rem[i] * rem[12 - i];
}
cout << m << endl;
return 0;
}
Этот код считывает количество чисел N и затем считывает N чисел в вектор rem. Затем он проходит по элементам вектора rem и вычисляет количество пар, сумма элементов которых кратна 12, используя арифметические вычисления с длинными целыми числами (long long) для предотвращения переполнения.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili