Математика ЕГЭ
Русский язык ЕГЭ
Математика 5-7
Математика ОГЭ
Информатика
Физика
Обществознание
Кликните, чтобы открыть меню

17. Программа для обработки целочисленной информации

1. Вспоминай формулы по каждой теме
2. Решай новые задачи каждый день
3. Вдумчиво разбирай решения

Программа для обработки целочисленной информации (страница 2)

Задание 8 #15171

Рассматривается множество целых чисел, принадлежащих числовому промежутку \([1568;\ 9956],\) которые являются квадратом натурального числа и при этом не делятся на \(9\) и \(25\)
Найдите количество таких чисел и максимальное из них.
В ответ запишите два этих целых числа: сначала количество, затем максимум.
Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.

Для выполнения задачи напишем программу.

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline def\; is\_square(x): & \#include\; <iostream> & function\; \; is\_square\; (x:\; integer):\; Boolean; \\ \quad f\; =\; False & & var\; i:\; integer; \\ \quad for\; i\; in\; range(2,\; x): & using\; namespace\; std; & f:\; Boolean; \\ \quad\quad if\; i*i\; ==\; x: & bool\; is\_square(int\; x)\{ & begin \\ \quad\quad\quad f\; =\; True & \quad int\; f,\; i; & \quad f\; :=\; False; \\ \quad\quad\quad break & \quad f\; =\; false; & \quad for\; i\; :=\; 2\; to\; x-1\; do \\ \quad return\; f & \quad for(i=2;\; i<x;\; i++) & \quad\quad if\; i*i\; =\; x\; then \\ \quad & \quad\quad if(i*i\; ==\; x)\{ & \quad\quad begin \\ c\; =\; 0 & \quad\quad\quad f\; =\; true; & \quad\quad\quad f\; :=\; True; \\ m\; =\; -1 & \quad\quad\quad break; & \quad\quad\quad Break; \\ for\; i\; in\; range(1568,\; 9956+1): & \quad\quad \} & \quad\quad end; \\ \quad if\; is\_square(i)\; \ \backslash & \quad return\; f; & \quad is\_square\; :=\; f; \\ \quad and\; i\%9\; !=\; 0\; \ \backslash & \} & end; \\ \quad and\; i\%25\; !=\; 0\; : & int\; main()\{ & var\; c,\; m,\; i:\; longint; \\ \quad\quad c\; +=\; 1 & \quad int\; c,\; m,\; i; & begin \\ \quad\quad if\; i\; >\; m: & \quad c\; =\; 0; & \quad c\; :=\; 0; \\ \quad\quad\quad m\; =\; i & \quad m\; =\; -1; & \quad m\; :=\; -1; \\ print(c) & \quad for(i=1568;\; i<=9956;\; i++) & \quad for\; i:=1568\; to\; 9956\; do \\ print(m) & \quad\quad if(is\_square(i) & \quad\quad if\; is\_square(i) \\ & \quad\quad \&\&\; i\%9\; !=\; 0 & \quad\quad and\; ((i\; mod\; 9)\; <>\; 0) \\ & \quad\quad \&\&\; i\%25\; !=\; 0)\{ & \quad\quad and\; ((i\; mod\; 25)\; <>\; 0) \\ & \quad\quad\quad c\; +=\; 1; & \quad\quad then \\ & \quad\quad\quad if(i\; >\; m) & \quad\quad begin \\ & \quad\quad\quad\quad m\; =\; i; & \quad\quad\quad c\; :=\; c+1; \\ & \quad\quad \} & \quad\quad\quad if\; i\; >\; m\; then \\ & \quad cout\; <<\; c\; <<\; endl; & \quad\quad\quad\quad m\; :=\; i; \\ & \quad cout\; <<\; m\; <<\; endl; & \quad\quad end; \\ & \quad return\; 0; & \quad writeln(c); \\ & \} & \quad writeln(m); \\ & & end. \\ \hline \end{array}\]

Функиця \(is\_square(x)\) проверяет, является ли число \(x\) квадратом натурального числа. Для этого она проверяет все целые числа от \(1\) до \(x-1\), и если среди нмх встречается число, которое в квадрате даёт \(x,\) то \(x\) является квадратом, если же таких чисел не нашлось, то \(x\) не является квадратом натурального числа.

В основной программе перебираем числа из заданного числового промежутка и проверяем все требуемые условия.

Программа выводит:

32

9604

Значит в ответ следует записать: 32 9604

Ответ: 32 9604

Задание 9 #15172

Рассматривается множество целых чисел, принадлежащих числовому промежутку \([3578;\ 8009],\) которые делятся на \(17,\) не делятся на \(93\) и десятичная запись которых оканчивается \(11\) (т.е. рассматриваются такие числа из промежутка, для которых выполняются все три условия)
Найдите количество таких чисел и минимальное из них.
В ответ запишите два этих целых числа: сначала количество, затем минимальное число.
Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.

Напишем программу, чтобы посчитать ответ.

В ней мы перебираем числа из заданного числового промежутка и проверяем все требуемые условия. \[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline c\; =\; 0 & \#include\; <iostream> & var\; c,\; m,\; i:\; longint; \\ m\; =\; 9000 & & begin \\ for\; i\; in\; range(3578,\; 8009+1): & using\; namespace\; std; & \quad c\; :=\; 0; \\ \quad if\; i\%100\; ==\; 11\; \ \backslash & int\; main()\{ & \quad m\; :=\; 9000; \\ \quad and\; i\%17\; ==\; 0\; \; \ \backslash & \quad int\; c,\; m,\; i; & \quad for\; i\; :=\; 3578\; to\; 8009\; do \\ \quad and\; i\%93\; !=\; 0: & \quad c\; =\; 0; & \quad\quad if((i\; mod\; 100)\; =\; 11) \\ \quad\quad c\; +=\; 1 & \quad m\; =\; 9000; & \quad\quad and\; ((i\; mod\; 17)\; =\; 0) \\ \quad\quad if\; i\; <\; m: & \quad for(i=3578;\; i<=8009;\; i++) & \quad\quad and\; ((i\; mod\; 93)\; <>\; 0) \\ \quad\quad\quad m\; =\; i & \quad\quad if(i\%100\; ==\; 11 & \quad\quad then \\ print(c) & \quad\quad \&\&\; i\%17\; ==\; 0 & \quad\quad begin \\ print(m) & \quad\quad \&\&\; i\%93\; !=\; 0)\{ & \quad\quad\quad c\; :=\; c+1; \\ & \quad\quad\quad c\; +=\; 1; & \quad\quad\quad if\; i\; <\; m\; then \\ & \quad\quad\quad if(i\; <\; m) & \quad\quad\quad\quad m\; :=\; i; \\ & \quad\quad\quad\quad m\; =\; i; & \quad\quad end; \\ & \quad\quad \} & \quad writeln(c); \\ & \quad cout\; <<\; c\; <<\; endl; & \quad writeln(m); \\ & \quad cout\; <<\; m\; <<\; endl; & end. \\ & \quad return\; 0; & \\ & \} & \\ \hline \end{array}\]

Программа выводит:

2

4811

Значит в ответ следует записать: 2 4811

Ответ: 2 4811

Задание 10 #15173

Рассматривается множество целых чисел, принадлежащих числовому промежутку \([3578;\ 8009]\)
Найдите количество простых чисел на заданном промежутке и максимальное из них, которое оканчивается на \(7.\)
В ответ запишите два этих целых числа: сначала количество, затем максимальное простое число, заканчивающееся на \(7.\)
Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.

Для выполнения задачи напишем программу.

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline def\; is\_simple(x): & \#include\; <iostream> & function\; \; is\_simple(x:\; integer):\; Boolean; \\ \quad f\; =\; True & & var\; i:\; integer; \\ \quad for\; i\; in\; range(2,\; x//2+2): & using\; namespace\; std; & f:\; Boolean; \\ \quad\quad if\; x\; \%\; i\; ==\; 0: & bool\; is\_simple(int\; x)\{ & begin \\ \quad\quad\quad f\; =\; False & \quad int\; f,\; i; & \quad f\; :=\; True; \\ \quad\quad\quad break & \quad f\; =\; true; & \quad for\; i\; :=\; 2\; to\; (x\; div\; 2)\; +\; 1\; do \\ \quad return\; f & \quad for(i=2;\; i<=x/2+1;\; i++) & \quad\quad if\; (x\; mod\; i)\; =\; 0\; then \\ c\; =\; 0 & \quad\quad if(x\%i\; ==\; 0)\{ & \quad\quad begin \\ m\; =\; -1 & \quad\quad\quad f\; =\; false; & \quad\quad\quad f\; :=\; False; \\ for\; i\; in\; range(2965,\; 9658+1): & \quad\quad\quad break; & \quad\quad\quad Break; \\ \quad if\; is\_simple(i): & \quad\quad \} & \quad\quad end; \\ \quad\quad c\; +=\; 1 & \quad return\; f; & \quad is\_simple\; :=\; f; \\ \quad\quad if\; i\%10\; ==\; 7: & \} & end; \\ \quad\quad\quad m\; =\; i & int\; main()\{ & var\; c,\; m,\; i:\; longint; \\ print(c) & \quad int\; c,\; m,\; i; & begin \\ print(m) & \quad c\; =\; 0; & \quad c\; :=\; 0; \\ & \quad m\; =\; -1; & \quad m\; :=\; -1; \\ & \quad for(i=2965;\; i<=9658;\; i++) & \quad for\; i:=2965\; to\; 9658\; do \\ & \quad\quad if(is\_simple(i))\{ & \quad\quad if\; is\_simple(i)\; then \\ & \quad\quad\quad c\; +=\; 1; & \quad\quad begin \\ & \quad\quad\quad if(i\%10\; ==\; 7) & \quad\quad\quad c\; :=\; c+1; \\ & \quad\quad\quad\quad m\; =\; i; & \quad\quad\quad if\; (i\; mod\; 10)\; =\; 7\; then \\ & \quad\quad \} & \quad\quad\quad\quad m\; :=\; i; \\ & \quad cout\; <<\; c\; <<\; endl; & \quad\quad end; \\ & \quad cout\; <<\; m\; <<\; endl; & \quad writeln(c); \\ & \quad return\; 0; & \quad writeln(m); \\ & \} & end. \\ \hline \end{array}\]

Функция \(is\_simple(x)\) проверяет, является ли число \(x\) простым. Для реализации этой функции сначала предположим, что \(x\) простое, затем будем перебирать числа от 1 до \(\frac{x}{2}+1.\) Если встретится такое число, что \(x\) делится на него, то \(x\) не простое, значит выводим \(False,\) а если такое число не было найдено, тогда наше предположение верно и мы выводим \(True.\) Далее, если мы находим новое простое число, которое заканчивается на \(7,\) то это новое такое максимальное число, т.к. мы перебираем числа от большего к меньшему

Программа выводит:

765

9587

Значит в ответ следует указать: 765 9587

Ответ: 765 9587

Задание 11 #15174

Рассматривается множество целых чисел, принадлежащих числовому промежутку \([73;\ 5578]\)
Найдите количество делителей числа 157080 на заданном промежутке и максимальный из них, заканчивающийся на такую же цифру, что и число 157080.
В ответ запишите два этих целых числа: сначала количество, затем максимальный делитель.
Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.

Для выполнения задачи напишем программу.

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline N\; =\; 157080 & \#include\; <iostream> & var\; c,\; m,\; i,\; N:\; longint; \\ c\; =\; 0 & & begin \\ m\; =\; -1 & using\; namespace\; std; & \quad N\; :=\; 157080; \\ for\; i\; in\; range(73,\; 5578+1): & int\; main()\{ & \quad c\; :=\; 0; \\ \quad if\; N\%i\; ==\; 0: & \quad int\; c,\; m,\; i,\; N; & \quad m\; :=\; -1; \\ \quad\quad c\; +=\; 1 & \quad N\; =\; 157080; & \quad for\; i:=73\; to\; 5578\; do \\ \quad\quad if\; i\%10\; ==\; 0: & \quad c\; =\; 0; & \quad\quad if\; (N\; mod\; i)\; =\; 0\; then \\ \quad\quad\quad m\; =\; i & \quad m\; =\; -1; & \quad\quad begin \\ print(c) & \quad for(i=73;\; i<=5578;\; i++) & \quad\quad\quad c\; :=\; c+1; \\ print(m) & \quad\quad if(N\%i\; ==\; 0)\{ & \quad\quad\quad if\; (i\; mod\; 10)\; =\; 0\; then \\ & \quad\quad\quad c\; +=\; 1; & \quad\quad\quad\quad m\; :=\; i; \\ & \quad\quad\quad if(i\%10\; ==\; 0) & \quad\quad end; \\ & \quad\quad\quad\quad m\; =\; i; & \quad writeln(c); \\ & \quad\quad \} & \quad writeln(m); \\ & \quad cout\; <<\; c\; <<\; endl; & end. \\ & \quad cout\; <<\; m\; <<\; endl; & \\ & \quad return\; 0; & \\ & \} & \\ \hline \end{array}\]

В ней мы перебираем числа из заданного числового промежутка и проверяем все требуемые условия

Программа выводит:

76

4760

Значит в ответ следует указать: 76 4760

Ответ: 76 4760

Задание 12 #16202

Рассматривается множество целых чисел, принадлежащих числовому промежутку \([1072;\ 8793],\) которые делятся на \(101\) но не делятся на \(11, 13\) и \(17\).
Найдите количество таких чисел и среднее арифметическое минимального и максимальное из этих чисел
В ответ запишите два этих целых числа: сначала количество, затем среденее арифметическое, если среднее арифметическое — не целое число, то результат округлите в меньшую сторону.
Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.

Напишем программу, чтобы посчитать ответ. \[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline c\; =\; 0 & \#include\; <iostream> & var\; c,\; maxim,\; minim,\; i:\; longint; \\ minim\; =\; 8795 & & begin \\ maxim\; =\; -1 & using\; namespace\; std; & \quad c\; :=\; 0; \\ for\; i\; in\; range(1072,\; 8793+1): & int\; main()\{ & \quad minim\; :=\; 8795; \\ \quad if\; i\%101\; ==\; 0 & \quad int\; c,\; maxim,\; minim,\; i; & \quad maxim\; :=\; -1; \\ \quad and\; i\%11\; !=\; 0 & \quad c\; =\; 0; & \quad for\; i:=1072\; to\; 8794\; do \\ \quad and\; i\%13\; !=\; 0 & \quad minim\; =\; 8795; & \quad\quad if\; ((i\; mod\; 101)\; =\; 0) \\ \quad and\; i\%17\; !=0: & \quad maxim\; =\; -1; & \quad\quad and\; ((i\; mod\; 11)\; <>\; 0) \\ \quad\quad c\; +=\; 1 & \quad for(i=1072;\; i<=8793;\; i++) & \quad\quad and\; ((i\; mod\; 13)\; <>\; 0) \\ \quad\quad if\; i\; >\; maxim: & \quad\quad if(i\%101\; ==\; 0 & \quad\quad and\; ((i\; mod\; 17)\; <>\; 0) \\ \quad\quad\quad maxim\; =\; i & \quad\quad \&\&\; i\%11\; !=\; 0 & \quad\quad then \\ \quad\quad if\; i\; <\; minim: & \quad\quad \&\&\; i\%13\; !=\; 0 & \quad\quad begin \\ \quad\quad\quad minim\; =\; i & \quad\quad \&\&\; i\%17\; !=0)\{ & \quad\quad\quad c\; :=\; c+1; \\ print(c) & \quad\quad\quad c\; +=\; 1; & \quad\quad\quad if\; i\; >\; maxim\; then \\ print((maxim+minim)//2) & \quad\quad\quad if(i\; >\; maxim) & \quad\quad\quad\quad maxim\; :=\; i; \\ & \quad\quad\quad\quad maxim\; =\; i; & \quad\quad\quad if\; i\; <\; minim\; then \\ & \quad\quad\quad if(i\; <\; minim) & \quad\quad\quad\quad minim\; :=\; i; \\ & \quad\quad\quad\quad minim\; =\; i; & \quad\quad end; \\ & \quad\quad \} & \quad writeln(c); \\ & \quad cout\; <<\; c\; <<\; endl; & \quad writeln((maxim+minim)\; div\; 2); \\ & \quad cout\; <<\; (maxim+minim)/2\; <<\; endl; & end. \\ & \quad return\; 0; & \\ & \} & \\ \hline \end{array}\]

В ней мы перебираем числа из заданного числового промежутка и проверяем все требуемые условия.

Программа выводит:

59

4999

Значит в ответ следует записать: 59 4999

Ответ: 59 4999

Задание 13 #16203

Рассматриваются множество целых чисел, принадлежащих числовому отрезку \([10923;16782)\), которые делятся на 2 и не делятся на 3, 8, 49, 100.

Найдите количество таких чисел и максимальное из них.

Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.

Программа перебирает все числа от 10923 до 16781 (обратите внимание на ограничения) и проверяет их на кратность. Одновременно она находит максимальное число, создавая переменную maxim и присваивая ей минимальное значение 0. Если программу удовлетворяют условия, то переменной maxim присваивается новое значение, большее её самой, а также обновляется счетчик интересуемых её чисел.

\[\begin{array}{ | l | l | l |} \hline Python & C++ & Pascal \\ \hline count=0 & \#include\; <iostream> & var\; i,maxim,count:integer; \\ maxim=0 & using\; namespace\; std; & begin \\ for\; i\; in\; range(10923,16782): & & \quad maxim:=0; \\ \quad if\; (i\%2==0): & int\; main()\{ & \quad count:=0; \\ \quad\quad if(i\%3!=0): & \quad int\; i,maxim,count; & \quad for\; i:=10923\; to\; 16781\; do \\ \quad\quad\quad if(i\%8!=0): & \quad count=0; & \quad begin \\ \quad\quad\quad\quad if(i\%49!=0): & \quad maxim=0; & \quad if\; i\; mod\; 2\; =\; 0\; then \\ \quad\quad\quad\quad\quad if(i\%100!=0): & \quad for(i=10923);i<16782;i++) & \quad\quad if\; i\; mod\; 3\; <>\; 0\; then \\ \quad\quad\quad\quad\quad\quad if(i>maxim): & \quad\quad if(i\%2==0) & \quad\quad\quad if\; i\; mod\; 8\; <>\; 0\; then \\ \quad\quad\quad\quad\quad\quad\quad maxim=i & \quad\quad\quad if(x\%3!=0) & \quad\quad\quad\quad if\; i\; mod\; 49\; <>\; 0\; then \\ \quad\quad\quad\quad\quad\quad\quad count+=1 & \quad\quad\quad\quad if(x\%8!=0) & \quad\quad\quad\quad\quad if\; i\; mod\; 100\; <>\; 0\; then \\ print(count,maxim) & \quad\quad\quad\quad\quad if(x\%49!=0) & \quad\quad\quad\quad\quad\quad if\; i\; >\; maxim\; then \;begin \\ & \quad\quad\quad\quad\quad\quad if(x\%100!=0) & \quad\quad\quad\quad\quad\quad\quad maxim\; :=\; i; \\ & \quad\quad\quad\quad\quad\quad\quad if(i>maxim)\{ & \quad\quad\quad\quad\quad\quad\quad count\; :=\; count\; +\; 1; \\ & \quad\quad\quad\quad\quad\quad\quad\quad maxim=i; & \quad\quad\quad\quad\quad\quad end; \\ & \quad\quad\quad\quad\quad\quad\quad\quad count+=1; \} & writeln(count;maxim); \\ & cout<<count<maxim; & end. \\ & \} & \\ \hline \end{array}\]

Ответ: 1416 16780