Содержание
- 2. 25. Пример (Демо-2021) Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [174457; 174505], числа,
- 3. 25. Общий подход Пишем решение «в лоб». Если получили ответ, то СТОП. Оптимизируем. Переходим к шагу
- 4. 25. Решение ## var startN:= 174457; var endN:= 174505; for var x:=startN to endN do begin
- 5. 25. Ускорение for var d:=2 to x div 2 do begin ... end; Делители в парах:
- 6. 25. Квадратный корень ## var x := 100000000000; while x var sqrtX := sqrt(x); if x
- 7. 25. Квадратный корень for var d:=2 to round(sqrt(x)) do begin ... end; 1) полный квадрат 5
- 8. 25. Квадратный корень var d:= 2; while d*d ... d += 1; end; Без вещественных чисел:
- 9. 25. Список делителей ## var startN := 174457; var endN := 174505; for var x:=startN to
- 10. 25. Простые числа function IsPrime(x: integer): boolean; begin Result:= False; if x var d:= 2; while
- 11. 25. Список простых чисел var primes := new List ; for var i:=1 to 1000000 do
- 12. 25. Пример (Б.С. Михлин) Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [194441; 196500]
- 13. 25. Решение «в лоб» var startN := 194441; var endN := 196500; for var x:=startN to
- 14. 25. Оптимизация var startN:= 194493 ; var endN:= 196500; var x:= startN; while x if IsPrime(x)
- 15. 25. Пример Рассматриваются целые числа, принадлежащих числовому отрезку [631632; 684934], которые представляют собой произведение двух различных
- 16. 25. Решение «в лоб» var startN := 631632; var endN := 684934; var maxDiff := 0;
- 17. 25. Оптимизация for var x:=startN to endN do for var d:=2 to round(sqrt(x))-1 do if x.Divs(d)
- 18. 25. Используем только простые var primes := new List ; for var i:=1 to round(sqrt(endN)) do
- 19. 25. Используем только простые for var x:=startN to endN do foreach var d in primes do
- 20. 17. Пример Назовём натуральное число подходящим, если ровно два из его делителей входят в список (7,
- 21. 17. Ровно два делителя var startN := 20000; var endN := 30000; var count := 0;
- 22. 25. Пример (Статград) Найдите все натуральные числа, принадлежащие отрезку [289123456; 389123456] и имеющие ровно три нетривиальных
- 23. 25. Решение «в лоб» var startN := 289123456; var endN := 389123456; for var x:=startN to
- 24. 25. Только квадраты var startN := 289123456; var endN := 389123456; for var sqrtX:=trunc(sqrt(startN)) to ceil(sqrt(endN))
- 25. 25. Основная теорема арифметики Любое число единственным способом представляется в виде произведения простых чисел: Число нетривиальных
- 26. 25. Только четвёртые степени var startN := 289123456; var endN := 389123456; for var qX:=trunc(sqrt(sqrt(startN))) to
- 27. 25. Готовые функции (Демо-2021) Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [174457; 174505],
- 28. 25. Модуль school ## uses school; for var x:=174457 to 174505 do begin var divs :=
- 29. 25. Функциональный стиль ## uses school; (174457..174505) .Select( x->x.Divisors ) .Where( x->x.Count = 4 ) .Select(
- 30. 25. Последовательность function mySeq( a, b: integer ): sequence of integer ; begin while a yield
- 31. 25. Функциональный стиль (10..20).Select( x->x.Divisors ).PrintLines; заменить каждый элемент последовательности на список его делителей [1,2,5,10] [1,11]
- 32. 25. Функциональный стиль (10..20).Select( x->x.Divisors ) .Where( x->x.Count = 4).PrintLines; отобрать те элементы списка, где количество
- 33. 25. Функциональный стиль (10..20).Select( x->x.Divisors ) .Where( x->x.Count = 4) .Select( x-> (x[1],x[2]) ).PrintLines; заменить каждый
- 34. 25. Пример (Б.С. Михлин) Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [194441; 196500]
- 35. 25. Функциональный стиль ## uses school; (194441..196500) .Where( x-> (x mod 100 = 93) and x.IsPrime
- 36. 17. Пример Назовём натуральное число подходящим, если ровно два из его делителей входят в список (7,
- 37. 25. Функциональный стиль ## uses school; var selected := (20000..30000) .Select( x->x.Divisors ) .Select( x->(x.Last, integer(7
- 38. 25. Функциональный стиль (70..91).Select( x->x.Divisors ).PrintLines; заменить каждый элемент последовательности на список его делителей [1,2,5,7,10,14,35,70] [1,71]
- 39. 25. Функциональный стиль (70..91).Select( x->x.Divisors ) .Select( x->(x.Last, integer(7 in x)+ integer(11 in x)+ integer(13 in
- 40. 25. Функциональный стиль (70..91).Select( x->x.Divisors ) .Select( x->(x.Last, ...) ) .Where( x-> x[1] = 2 )
- 41. 25. Функциональный стиль (70..91).Select( x->x.Divisors ) .Select( x->(x.Last, ...) ) .Where( x-> x[1] = 2 )
- 42. 25. Функциональный стиль ## var z:= (20000..30000) .Select( x->(x, |7,11,13,19|.Count(d->x.Divs(d)) ) .Where( x-> x[1] = 2
- 43. 25. Пример (Статград) Найдите все натуральные числа, принадлежащие отрезку [289123456; 389123456] и имеющие ровно три нетривиальных
- 44. 25. Функциональный стиль ## uses school; (trunc(sqrt(sqrt(289123456))).. ceil(sqrt(sqrt(389123456)))) .Where( x->x.IsPrime ) .Select( x->x*x*x*x ) .Println;
- 45. 26. Сортировка (Демо-2021) Раз в неделю создаёт архив файлов. Объём диска, может быть меньше, чем суммарный
- 46. 26. Решение в Excel https://kpolyakov.spb.ru/download/ege26.doc А. Сидоров: www.youtube.com/watch?v=LwTZAHsno0k
- 47. 26. Решение ## Assign(input, '26.txt'); var (V, n) := ReadInteger2; var a := ReadArrInteger(n); a.Sort; var
- 48. 26. Сортировка ## var A := | 27, 19, 21, 33 |; A.Sort; A.Println; 19 21
- 49. 26. Сортировка 21 41 33 19 19 33 41 21 ## uses school; var A :=
- 50. 26. Сортировка (последовательности) ## var A := | 27, 19, 25, 33 |; A.Order.Println; 19 25
- 51. 26. Сортировка (последовательности) ## var A := | 27, 19, 25, 33 |; A.OrderBy( x->x mod
- 52. 26. Сортировка (последовательности) 21 41 33 19 19 33 41 21 по сумме цифр ## uses
- 53. 26. Пример (Е. Джобс) В магазине проводят акция – каждый второй товар со скидкой 50%. При
- 54. 26. Решение на Python with open("26-44.txt") as F: N = int(F.readline()) data = [] for i
- 55. 26. Решение на Python # ... продолжение last = 500 discount, costMax = 0, 0 while
- 56. 26. Решение на PascalABC.NET ## Assign(input, '26-44.txt'); var N := ReadInteger; var data := ReadArrInteger(N); data.Sort;
- 57. 26. Решение на PascalABC.NET # ... продолжение var (last, discount, costMax):= (500,0.0,0.0); while data.Count > 0
- 58. 26. Пример (А. Кабанов) На складе лежат пакеты с углём различного веса и стоимости. Вес и
- 59. 26. Решение на Python with open("26-k6.txt") as F: data = F.readlines() N, K = map(int, data[0].split())
- 60. 26. Решение на Python # ... продолжение pairs.sort( key = lambda x: (x[1]/x[0], -x[0]) ) selected
- 61. 26. Решение на PascalABC.NET ## Assign(input, '26-k6.txt'); var (N, K):= ReadInteger2; var pairs := (1..N) .Select(
- 62. 26. Решение на PascalABC.NET # ... продолжение var selected := pairs[:K]; var weight := selected.Select( x->x[0]
- 63. 26. Пример В текстовом файле записан набор натуральных чисел. Гарантируется, что все числа различны. Необходимо определить,
- 64. 26. Решение на Python with open("26.txt") as F: N = int(F.readline()) data = [int(s) for s
- 65. 26. Решение на Python (плохое) # ... продолжение count = 0 ma = 0 for av
- 66. 26. Идея хорошего решения 9, 10, 14, 13, 8, 11 Все пары нечётных чисел: (9, 13)
- 67. 26. Решение на Python # ... продолжение selected = [] i = 0 for av in
- 68. 26. Решение на PascalABC.NET ## Assign(input, '26.txt'); var N:= ReadInteger; var data:= ReadArrInteger(N); data.Sort; var averages
- 69. 26. Решение на PascalABC.NET ## Assign(input, '26.txt'); var N:= ReadInteger; var data:= ReadArrInteger(N); data.Sort; var averages
- 70. 26. Решение на PascalABC.NET # ... продолжение var selected := new List ; var i:= 0;
- 71. Благодарности Автор благодарит Алексея Богданова (Alex Danov) https://www.youtube.com/c/AlexDanov Станислава Михалковича https://pascalabc.net за полезные замечания и предложения.
- 73. Скачать презентацию