На вход программе подается последовательность целых чисел каждое число на отдельной строке

На вход программы поступает последовательность из N целых положительных чисел, все числа в последовательности различны.

Рассматриваются все пары различных элементов последовательности (элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре не важен). Необходимо определить количество пар, для которых произведение элементов не делится на 34.
Описание входных и выходных данных
В первой строке входных данных задаётся количество чисел N (1≤N≤1000).
В каждой из последующих N строк записано одно целое положительное число, не превышающее 10 000. В качестве результата программа должна напечатать одно число: количество пар, в которых произведение элементов не кратно 34.
Пример входных данных:
5
3
4
10
11
17
Пример выходных данных для приведённого выше примера входных данных:
8

Пояснение. Из заданных чисел можно составить 10 попарных произведений: 3·4, 3·10, 3·11, 3·17, 4·10, 4·11, 4·17, 10·11, 10·17, 11·17 (результаты: 12, 30, 33, 51, 40, 44, 68, 110, 170, 187). Из них на 34 не

7.4 Количество пятерок. «Поколение Python»: курс для начинающих. Курс Stepik


делятся 8 произведения (3·4=12, 3·10=30, 3·11=33, 3·17=51, 4·10=40, 4·11=44, 10·11=110, 11·17=187).
Требуется написать эффективную по времени и по памяти программу для решения описанной задачи.
Программа считается эффективной по времени, если при увеличении количества исходных чисел N в k раз время работы программы увеличивается не более чем в k раз.
Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 Кбайт и не увеличивается с ростом N.
Максимальная оценка за правильную (не содержащую синтаксических ошибок и дающую правильный ответ при любых допустимых входных данных) программу, эффективную по времени и по памяти, – 4 балла.
Максимальная оценка за правильную программу, эффективную только по времени – 3 балла.
Максимальная оценка за правильную программу, не удовлетворяющую требованиям эффективности, – 2 балла

Читайте также:
Программа для анализа топ 3

Решение:

Программа на языке Pascal. (4б)

Источник: informatikaexpert.ru

На вход программе подается последовательность целых чисел каждое число на отдельной строке

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

Наши условия использования и конфиденциальности

Get it on Google Play

Public user contributions licensed under cc-wiki license with attribution required

Источник: stepik.org

Решение задач на С++

Задача A. Кролики
Пусть есть n клеток и m зайцев, которых рассадили по этим клеткам. Вам требуется расcчитать максимальное количество зайцев, которое гарантированно окажется в одной клетке (по принципу Дирихле).
В первой строке входного файла записаны два натуральных числа n и m. (1 ≤ n, m ≤ 10 9 ).

  1. int n, m, count = 0;
  2. cin >> n >> m;
  3. count = m / n;
  4. m %= n;
  5. if (m)
  6. count++;
  7. cout

Задача B. Сумма от 1 до N
Сумму всех целых чисел от 1 до 100 можно посчитать при помощи хитрого приема.
Разобьем все числа по парам 1 и 100, 2 и 99, 3 и 98 и т.д. Сумма каждой пары 101. Пар всего 100 пополам (50). Поэтому сумма равна

Дано одно целое число N. Гарантируется, что ответ «помещается» в тип long long (в Си). Найти сумму всех целых чисел от 1 до N.

  1. long long sum_modul( long long n)
  2. if (n
  3. else
  4. return n/2*(n+1);
  5. >
  6. int main()
  7. freopen( «input.txt» , «r» ,stdin);
  8. freopen( «output.txt» , «w» ,stdout);
  9. long long n, s;
  10. cin >> n;
  11. if (n > 0)
  12. s = sum_modul(n);
  13. else
  14. s = -sum_modul(-n) + 1;
  15. cout
  16. return 0;
  17. >

P.S.
1) Важно заметить, что в условии задачи гарантируется, что лишь ответ помещается в тип long long. А на промежутчные вычисления такой гарантии не дается, поэтому в функции sum_modul формулу подсчета стоит модифицировать так, чтобы сначала происходило деление на 2, а только потом умножение. Таким образом мы предохраняемся от переполнения типа. Целочисленно делить на 2 без потерь, конечно, нужно четное число, поэтому заранее проверяем в строке 3, что является четным: само значение n или n+1.
2) Второй подводный камень условия – нет гарантии исключения отрицательности конечного значения N. Поэтому в строках 16 и 18 учитываем особенности знака.

Читайте также:
Файл с расширением dwg какая программа

Задача C. k-я секунда суток
Идёт k-я секунда суток. Определите, сколько целых часов h и целых минут m прошло с начала суток.
На вход программе подается целое число k (0 ≤ k ≤ 86399). Выведите на экран фразу:
It is . hours . minutes.
Вместо многоточий программа должна выводить значения h и m, отделяя их от слов ровно одним пробелом.

  1. int s, h, m;
  2. cin >> s;
  3. s—;
  4. h = s / 3600;
  5. m = (s % 3600)/ 60;
  6. cout

P.S. Нужно обратить внимание, что в условии задачи просится найти сколько прошло полных часов и минут, т.е. если идет 60-ая секунда, то это значит, что прошло полных только 59 секунд, но никак не минута. Поэтому первым делом в 3-ей строке кода избавляемся от “идущей” незавершившейся секунды: s — .

Задача D. Часовая стрелка
Часовая стрелка повернулась с начала суток на d градусов. Определите, сколько сейчас целых часов h и целых минут m. На вход программе подается целое число d (0 ≤ d < 360). Выведите на экран фразу:
It is . hours . minutes.
Вместо многоточий программа должна выводить значения h и m, отделяя их от слов ровно одним пробелом.

  1. int d, m, h;
  2. cin >> d;
  3. m = d * 2;
  4. h = m / 60;
  5. m %= 60;
  6. cout

Задача E. Без циклов
В книге на одной странице помещается k строк. Таким образом, на 1-й странице печатаются строки с 1-й по k-ю, на второй — с (k+1)-й по (2k)-ю и т. д. Напишите программу, по номеру строки в тексте определяющую номер страницы, на которой будет напечатана эта строка, и порядковый номер этой строки на странице.
На вход программе подаются число k — количество строк на странице и число n — номер строки в тексте (1 ≤ k ≤ 200, 1 ≤ n ≤ 20000).

  1. int k, n, page, line;
  2. cin >> k >> n;
  3. page = (n — 1) / k + 1;
  4. line = (n — 1) % k + 1;
  5. cout
Читайте также:
Как найти установленную программу

Задача F. Два момента времени
Даны значения двух моментов времени, принадлежащих одним и тем же суткам: часы, потом минуты и секунды для каждого из моментов времени. Известно, что второй момент времени наступил не раньше первого. Определите, сколько секунд прошло между двумя моментами времени.
В первой строке входных данных находятся три целых числа — часы, минуты и секунды первого момента времени. Во второй строке — три числа, характеризующие второй момент времени. Число часов лежит в диапазоне от 0 до 23, число минут и секунд — от 0 до 59.

  1. int h1, m1, s1;
  2. cin >> h1 >> m1 >> s1;
  3. int h2, m2, s2;
  4. cin >> h2 >> m2 >> s2;
  5. s1 = s1 + m1*60 + h1*3600;
  6. s2 = s2 + m2*60 + h2*3600;
  7. cout

Источник: cpptasksolver.blogspot.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru