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

7. Ввести послідовність з трьох чисел і підрахувати добуток тих із них, які кратні 3( зробити діаграмою)

Показать ответ
Ответ:
dashabd1
dashabd1
08.08.2022 13:38

Проверил, код работает!

Если будут вопросы - написать в комменты, отвечу.

P. S.

n - кол-во столбцов

m - кол-во строк.

#include <iostream>

#include <vector>

using namespace std;

int main(){

   int n, m;

   cin >> m >> n;

   bool isDot = true, isA = !(n % 2) and !(m % 2) or n % 2 and !(m % 2);

   vector<vector<char>> v(n, vector<char>(m));

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

       for (int j = 0; j < m; j++) {

           if(isDot)

               v[i][j] = '.';

           else v[i][j] = '*';

           isDot = isDot xor 1;

       }

       if(isA) isDot = isDot xor 1;

   }

   for(auto& i: v){

       for(auto j: i)

           cout << j << ' ';

       cout << endl;

   }

   return 0;

}

0,0(0 оценок)
Ответ:
tiser
tiser
02.11.2020 11:43

2 + 4 + 6 + ... + 2k - арифметическая прогрессия, значит мы можем найти сумму этого ряда по формуле суммы арифметической прогрессии, вынесем это в отдельную функцию :

def sumN(first, last):

   return (first + last) * ((last - first + 2) // 2) / 2

Дальше будем перебирать последний элемент для ряда, просто идти в цикле долго и глупо, поэтому зная, что функция суммы ряда из положительных чисел монотонно возрастающая, то найдем подходящий последний элемент, а значит и кол-во слагаемых с бинпоиска за логарифм вместо линии :

def sumN(first, last):

   return (first + last) * ((last - first + 1) // 2) / 2

N = int(input())

l = 1

r = 100000

res = -1

while l <= r :

   m = (l + r) // 2

   F = 2

   L = 2 * m

   if sumN(F,L) > N :

       res = m

       r = m - 1

   else :

       l = m + 1

print(res)

полный код :

def sumN(first, last):

   return (first + last) * ((last - first + 1) // 2) / 2

N = int(input())

l = 1

r = 100000

res = -1

while l <= r :

   m = (l + r) // 2

   F = 2

   L = 2 * m

   if sumN(F,L) > N :

       res = m

       r = m - 1

   else :

       l = m + 1

print(res)


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