В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
sukhodolova
sukhodolova
27.09.2020 14:25 •  Информатика

Код на питоне и на с++ Забавная игра
Вы с друзьями играете в следующую игру. Друзья пишут на доске подряд N натуральных чисел. Ваша задача — найти как можно больше подряд идущих чисел, которые бы делились на одно и то же число, большее 1. Так как вручную искать ответ сложно, вы решили написать программу, которая сделает работу за вас.

Входные данные

В первой строке входного файла задано число N(1 ≤ N ≤ 100000). Во второй строке записано через пробел N целых чисел A1...AN(1 ≤ Ai ≤ 1000, 1 ≤ i ≤ N). Это те самые числа, которые написали ваши друзья. Они даны в том же порядке, в котором они расположены на доске.

Выходные данные

Ваша программа должна вывести в выходной файл одно целое число — наибольшее количество подряд идущих чисел заданной последовательности, которые бы делились на одно и то же натуральное число, большее 1.

Примеры
Ввод 1
3
6 10 15
Вывод
2

Показать ответ
Ответ:
Aizadaserikova2004
Aizadaserikova2004
15.10.2020 13:41

От пользователя: размерность массива, делитель, массив. Пользователь заполняет массив.

Далее проходим по массиву, находим "группки" чисел, которые делятся нацело на делитель, данный пользователем. Находим i (индекс, с которого идут делящиеся числа). Записываем, сколько этих чисел было. Выводим всю информацию.

#include <iostream>

using namespace std;

int main() {

setlocale (LC_ALL, "Russian");

int counter[1000] = {0};

int startIndex[1000];

int max = 0;

int indexMax = 0;

int sCounter = 0;

int finishIndex[1000];

bool is = 0;

int N;

cin >> N;

int a[N];

int del = 0;

cout << "Делитель: ";

cin >> del;

for(int i = 0; i<N; ++i) {

 cin >> a[i];

}

for(int i = 0; i<N; ++i) {

 if(a[i]%del==0) {

  if(is==0) {

   startIndex[sCounter]=i; // записываем стартовую позицию

   is=1;

  }

  ++counter[sCounter]; // прибавляем счетчик

 }

 else {

  finishIndex[sCounter]=i; // финишная позиция

  is=0;

  ++sCounter;

 }

}

for(int i = 0; i<1000; ++i) {

 if(counter[i]>max) {

  max = counter[i];

  indexMax=i;

 }

}

cout << "Числа с " << startIndex[indexMax]+1 << " по " << startIndex[indexMax]+max <<

endl << " делятся нацело на " << del << " " << max << " раз подряд";

 

}


Код на питоне и на с++ Забавная игра Вы с друзьями играете в следующую игру. Друзья пишут на доске п
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота