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

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

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела 17. Программа для обработки целочисленной информации:

Это старая версия каталога задач

Нажмите для перехода на новую версию

Решаем задачи
Задание 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
1

2

Рулетка
Вы можете получить скидку в рулетке!