Ханты-Мансийский автономный округ – Югра Обучающая олимпиада «Пятёрка за неделю» 2011-2012 учебный год № 3 – Простая математика Задача A. Арифметическая прогрессия (Время: 1 сек. Память: 16 Мб Сложность: 15%) Заданы первый и второй элементы арифметической прогрессии. Требуется написать программу, которая вычислит элемент прогрессии по ее номеру. Входные данные Входной файл INPUT.TXT содержит три целых числа, разделенных пробелами – первый элемент прогрессии A1 (1 ≤ A1 ≤ 1000), второй элемент прогрессии A2 (1 ≤ A2 ≤ 1000) и номер требуемого элемента N (1 ≤ N ≤ 1000). Выходные данные Выходной файл OUTPUT.TXT должен содержать одно целое число - N-й элемент арифметической прогрессии. Пример № INPUT.TXT OUTPUT.TXT 1 5 3 9 1 Разбор Для решения задачи необходимо вспомнить формулу для n-го члена арифметической прогрессии an=a1+d·(n-1)=a1+(a2-a1)·(n-1). Программа var a1, a2, n : integer; an : longint; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); read(a1,a2,n); an:=a2-a1; an:=a1+an*(n-1); write(an) end. Задача B. Разбиение на части (Время: 1 сек. Память: 16 Мб Сложность: 21%) Необходимо представить целое число N в виде суммы M примерно равных чисел. Будем считать, что числа примерно равны, если они отличаются друг от друга не более чем на единицу. Входные данные Во входном файле INPUT.TXT записаны два натуральных числа N и M через пробел, каждое из которых не превосходит 30000. Выходные данные Выходной файл OUTPUT.TXT должен содержать M примерно равных чисел, сумма которых должна быть равна N. Все числа следует вывести в одной строке в порядке неубывания через пробел. Примеры № INPUT.TXT OUTPUT.TXT 13 4 3 3 3 4 1 72 8 9 9 9 9 9 9 9 9 2 http://acmu.ru Югорский НИИ ИТ, Югорский ФМЛ 1 Ханты-Мансийский автономный округ – Югра Обучающая олимпиада «Пятёрка за неделю» 2011-2012 учебный год № 3 – Простая математика Разбор N N N N N N = M + N mod M = + ... + + 1 + ... + 1 M M M M M , где выN mod M раз ражение в квадратных скобках это целая часть числа, следует, что вначале надо напечатать N M-N mod M раз число a = , а затем N mod M раз число a+1. M Программа Из соотношения var n, m, i, a, b : integer; begin assign(input, 'input.txt'); reset(input); assign(output, 'output.txt'); rewrite(output); read(n,m); a:=n div m; b:=n mod m; for i:=1 to m-b do write(a,' '); for i:=1 to b do write(a+1,' ') end. Задача C. Оптовая покупка (Время: 1 сек. Память: 16 Мб Сложность: 27%) Пара носков стоит 10 руб. 50 коп., связка (12 пар) стоит 102 руб. 50 коп., а коробка (12 связок) стоит 1140 руб. Требуется написать программу, которая по числу пар носков, которые хочет купить покупатель, вычисляет количества коробок, связок и пар носков, которые ему следует купить с наибольшей выгодой. Входные данные Входной файл INPUT.TXT содержит натуральное число N (N ≤ 109) – число пар носков, которые желает купить покупатель. Выходные данные Выходной файл OUTPUT.TXT должен содержать три числа (первое – количество коробок, второе – связок, третье – пар носков), разделенные пробелами. Примеры № INPUT.TXT OUTPUT.TXT 11 0 1 0 1 500 3 5 8 2 Разбор Обозначим через n1, n2, n3 количество коробок, связок и пар носков, которые следует купить. Оптимальная покупка без излишков находится очевидным образом. Это записано в первых четырех операторах после ввода в нижеприведенной программе. Удешевить покупку можно лишь двумя способами – либо взять лишнюю связку и не брать пар, либо взять лишнюю коробку и не брать ни связок, ни пар. Программа var n, m, n1, n2, n3 : longint; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); read(n); n1:=n div 144; m:=n mod 144; n2:=m div 12; http://acmu.ru Югорский НИИ ИТ, Югорский ФМЛ 2 Ханты-Мансийский автономный округ – Югра Обучающая олимпиада «Пятёрка за неделю» 2011-2012 учебный год № 3 – Простая математика n3:= m mod 12; if n3*105>1025 then begin n2:=n2+1; n3:=0 end; if n2*1025+n3*105>11400 then begin n1:=n1+1; n2:=0; n3:=0 end; write(n1,' ',n2,' ',n3) end. Задача D. Телепортация (Время: 1 сек. Память: 16 Мб Сложность: 30%) Вова попал на космическом корабле на бесконечную плоскую планету в точку с координатами (x1, y1). Вова, управляя кораблем, имеет возможность за одну секунду телепортироваться из точки (x, y) в одну из точек (x+C, y+C), (x+C, y-C), (x-C, y+C), (x-C, y-C), где C произвольное натуральное число. Требуется написать программу, которая определит, через какое минимальное время Вове удастся достичь точки (x2, y2). Входные данные Входной файл INPUT.TXT содержит в первой строке числа x1, y1, во второй – x2, y2. Все числа целые от нуля до 106. Точки (x1, y1) и (x2, y2) не совпадают. Выходные данные Выходной файл OUTPUT.TXT должен содержать одно число – минимальное время телепортации. Если такая телепортация невозможна, то вывести 0. Пример № INPUT.TXT OUTPUT.TXT 0 0 2 1 0 2 Разбор Так как корабль может двигаться только по диагоналям, то за одну секунду он может из одной точки попасть в другую, если эти точки расположены на одной диагонали. Для телепортации через промежуточную точку надо проверить условие целочисленности координат этой точки. Программа var x1, y1, x2, y2 : longint; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); read(x1,y1,x2,y2); if (x1+y1=x2+y2)or(x1-y1=x2-y2) then write(1) else if ((x2-x1+y1+y2) mod 2=0) then write(2) else write(0) end. Задача E. Ксерокопии (Время: 1 сек. Память: 16 Мб Сложность: 38%) Секретарша Ирочка сегодня опоздала на работу и ей срочно нужно успеть к обеду сделать N копий одного документа. В ее распоряжении имеются два ксерокса, один из которых копирует лист за х секунд, а другой – за y секунд. Разрешается использовать как один ксерокс, так и оба одновременно. Можно копировать не только с оригинала, но и с копии. Помогите ей выяснить, какое минимальное время для этого потребуется. Входные данные Во входном файле INPUT.TXT записаны три натуральных числа N, x и y, разделенные пробелом (1 ≤ N ≤ 2·108, 1 ≤ x, y ≤ 10). http://acmu.ru Югорский НИИ ИТ, Югорский ФМЛ 3 Ханты-Мансийский автономный округ – Югра Обучающая олимпиада «Пятёрка за неделю» 2011-2012 учебный год № 3 – Простая математика Выходные данные В выходной файл OUTPUT.TXT выведите одно число – минимальное время в секундах, необходимое для получения N копий. Примеры № INPUT.TXT OUTPUT.TXT 4 1 1 3 1 5 1 2 4 2 Разбор Сделаем на быстром ксероксе одну копию. Теперь у нас есть два экземпляра документа и нам надо сделать еще N-1 копию. Заметим теперь, что за время T можно сделать T div x + T div y копий. Для решения применим метод деления отрезка пополам для нахождения минимального времени, за которое можно сделать эти N-1 копии. Программа var n, x, y, i, j, l, r, now : longint; begin assign(input, 'input.txt'); reset(input); assign(output, 'output.txt'); rewrite(output); read(n,i,j); if i<j then x:=i else x:=j; if i>j then y:=i else y:=j; l:=0; r:=(n-1)*y; while l<>r do begin now:=(l+r)div 2; j:=now div x + now div y; if j<n-1 then l:=now+1 else r:=now end; write(r+x); close(output) end. http://acmu.ru Югорский НИИ ИТ, Югорский ФМЛ 4