dakimov
?>

Код на питоне и на с++ Забавная игра Вы с друзьями играете в следующую игру. Друзья пишут на доске подряд N натуральных чисел. Ваша задача — найти как можно больше подряд идущих чисел, которые бы делились на одно и то же число, большее 1. Так как вручную искать ответ сложно, вы решили написать программу, которая сделает работу за вас. Входные данные В первой строке входного файла задано число N(1 ≤ N ≤ 100000 Во второй строке записано через пробел N целых чисел A1...AN(1 ≤ Ai ≤ 1000,  1 ≤ i ≤ N). Это те самые числа, которые написали ваши друзья. Они даны в том же порядке, в котором они расположены на доске. Выходные данные Ваша программа должна вывести в выходной файл одно целое число — наибольшее количество подряд идущих чисел заданной последовательности, которые бы делились на одно и то же натуральное число, большее 1. Примеры Ввод 1 3 6 10 15 Вывод 2

Информатика

Ответы

megapolisgroup

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

Далее проходим по массиву, находим "группки" чисел, которые делятся нацело на делитель, данный пользователем. Находим 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 << " раз подряд";

 

}


Код на питоне и на с++ Забавная игра Вы с друзьями играете в следующую игру. Друзья пишут на доске п
Милита1065

--- Python 3.8.3 ---

#1 - file mdir.py

import os  

import sys  

import difflib

__all__ = ['CreateEmptyDir', 'RmDir']

__here__ = os.path.dirname(os.path.realpath(__file__))

#Функция, создающая папки

def CreateEmptyDir(count, path = __here__):

   try:

       for i in range(count):

           rpath = path + f'\\dir_{i}'

           os.mkdir(rpath)

   except OSError:

       print(f'Failed to create directory {path}')

#Функция, удаляющая папки

def RmDir(mask, path = __here__):

   try:

       for folder in os.listdir(path):

           s = difflib.SequenceMatcher(None, mask, folder)

           if s.ratio() > 0.8:

               f = path + '\\' + folder

               if os.path.isdir(f):

                   os.rmdir(f)

   except OSError as e:

       print(f'Failed to remove directory {f}\n{e}')

#Вызов функций из модуля

def main():

   CreateEmptyDir(10)

   next = input()

   RmDir('dir_')

if __name__ == "__main__":

   main()

#2 - file randchoise.py

import random  

__all__ = ['RandChoise']

def RandChoise(lst):

   if len(lst) == 0: return None  

   return random.choice(lst)

def main():

   data = [1,2,3,4]

   print(RandChoise(data))

if __name__ == "__main__":

   main()

#3 main.py

from mdir import *

from randchoise import *

import time

def main():

   CreateEmptyDir(10)

   time.sleep(3)  #Что бы успели прогрузиться созданные папки

   RmDir('dir_')

   print(RandChoise([1,2,3,4,5,6,7,8,9,2,1,32,31,2540]))

if __name__ == "__main__":

   main()

Руслан Руденко1262
Треугольник существует, если сумма длин двух любых его сторон больше длины третьей стороны.
Длина стороны может быть определена как расстояние между соответствующими сторонами треугольника:
\displaystyle L_{AB}=\sqrt{(x_B-x_A)^2+(y_B-y_A)^2

// PascalABC.NET 3.0, сборка 1160 от 05.02.2016
type
  Point=record
  x,y:real
  end;

procedure GetPoint(c:char;var M:Point);
begin
  Write('Введите координаты точки ',c,': ');
  Read(M.x,M.y)
end;

function Dist(a,b:Point):=sqrt(sqr(b.x-a.x)+sqr(b.y-a.y));

begin
  var A,B,C:Point;
  GetPoint('A',A); GetPoint('B',B); GetPoint('C',C);
  var ab:=Dist(A,B);
  var bc:=Dist(B,C);
  var ac:=Dist(A,C);
  if (ab<bc+ac) and (bc<ab+ac) and (ac<ab+bc) then
    Writeln('Треугольник существует')
  else Writeln('Треугольник не существует')
end.

Тестовое решение:
Введите координаты точки A: -6.9 -5.3
Введите координаты точки B: 0 11.4
Введите координаты точки C: 9 3
Треугольник существует

Ответить на вопрос

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

Код на питоне и на с++ Забавная игра Вы с друзьями играете в следующую игру. Друзья пишут на доске подряд N натуральных чисел. Ваша задача — найти как можно больше подряд идущих чисел, которые бы делились на одно и то же число, большее 1. Так как вручную искать ответ сложно, вы решили написать программу, которая сделает работу за вас. Входные данные В первой строке входного файла задано число N(1 ≤ N ≤ 100000 Во второй строке записано через пробел N целых чисел A1...AN(1 ≤ Ai ≤ 1000,  1 ≤ i ≤ N). Это те самые числа, которые написали ваши друзья. Они даны в том же порядке, в котором они расположены на доске. Выходные данные Ваша программа должна вывести в выходной файл одно целое число — наибольшее количество подряд идущих чисел заданной последовательности, которые бы делились на одно и то же натуральное число, большее 1. Примеры Ввод 1 3 6 10 15 Вывод 2
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

ivstigres65
imosal
mustaevdmitry397
lele52
volchek01112240
Zebra198383
mmoskow3
Валерьевна1601
farmprofi
kodim4
annanechaeva567
tnkul
Erikhovich
kolesnikovaen
Richbro7