Задача A. Средняя зарплата
Задача A. Средняя зарплата
Имя входного файла: | a.in |
Имя выходного файла: | a.out |
Максимальное время работы на одном тесте: | 1 секунда |
Максимальный объем используемой памяти: | 64 мегабайта |
| |
В фирме MacroHard работают N сотрудников, каждый из которых получает зарплату, выражающуюся целым числом рублей. Известно, что ни один сотрудник не получает меньше 5000 рублей, и никто не получает больше 100000 рублей. Также известно, что средняя зарплата сотрудника в этой фирме выражается целым числом копеек и составляет A рублей B копеек.
Журналист, готовя публикацию об этой фирме, решил привести зарплаты всех сотрудников. Однако оказалось, что это коммерческая тайна. Журналиста это не смутило, и он решил придумать всем сотрудникам зарплаты. Однако у него возникла сложность – для правдоподобности должны выполняться все общеизвестные ограничения (зарплаты должны выражаться целым числом рублей из диапазона от 5000 до 100000, и вычисление средней зарплаты должно в точности приводить к результату A рублей B копеек).
Помогите ему! Напишите программу, которая по введенным числам N, A, B «придумает» и выведет N зарплат. Гарантируется, что решение существует.
Формат входных данных
Вводятся натуральное число N (1 ≤ N ≤ 100), натуральное число A (10000 ≤ A ≤ 30000) и целое число B (0 ≤ B ≤ 99).
Формат выходных данных
Выведите N целых чисел, выражающих зарплаты сотрудников в рублях. Если возможных вариантов распределения зарплат несколько, выведите любой из них.
Примеры
a .in | a.out |
5 10000 0 | 10000 10000 10000 10000 10000 |
2 20000 50 | 20000 20001 |
Решение.
Program zada;
Uses crt;
//задаем необходимые переменные:
Var s, a, n, b, i: integer;
Begin
//очищаем экран:
clrscr;
//считываем вводимые переменные:
Readln (n, a, b);
// по определению среднего арифметического S/n =a + b/100 или S=a*n + b*n/100, так как s,a,n целые, то b*n/100 так же должно быть целым, т.е. b*n должно делиться на 100. Отсюда следует, что ровно b*n/100 сотрудникам надо повысить зарплату на 1 рубль, т.е. выдать а+1 рублей:
For i: =1 to trunc (b*n/100) do
Writeln (a+1);
//оставшимся сотрудникам выдаем по а:
For i: =1 to trunc(n-b*n/100) do рублей.
Writeln (a);
Readkey;
End.
Задача B. Лягушка
Имя входного файла: | b.in |
Имя выходного файла: | b.out |
Максимальное время работы на одном тесте: | 0.4 секунды |
Максимальный объем используемой памяти: | 64 мегабайта |
| |
N-лягушка живет на болоте, на котором в ряд растут бесконечно много кувшинок, пронумерованных слева направо числами 1, 2, 3, ...
Изначально N-лягушка сидит на кувшинке с номером K (K > N). Каждый раз N-лягушка прыгает на N кувшинок влево и повторяет это, пока не оказывается на номере, меньше либо равном N. Если она попадает на кувшинку с номером N, то становится счастливой, и дальше никуда не прыгает. Если же она попадает на кувшинку с каким-нибудь номером M < N, то огорчается, прыгает на N кувшинок вправо и превращается в M-лягушку (теперь она будет прыгать на M клеток влево и мечтать попасть на клетку номер M, а если у нее это не получится, то она превратится в X-лягушку, и так далее).
Требуется выяснить, исполнятся ли когда-либо мечты N-лягушки, сидящей изначально на кувшинке с номером K, и если да, то на какой кувшинке она окажется.
Формат входных данных
Вводятся два натуральных числа N и K. 1 ≤ N < K ≤ 2∙109.
Формат выходных данных
Выведите номер кувшинки, на которой останется N-лягушка. Если мечты лягушки никогда не исполнятся, выведите одно число 0.
Примеры
b.in | b.out |
2 10 | 2 |
2 5 | 1 |
Решение.
Program zadb;
Uses crt;
//Задаем переменные:
Var n, k, x: longint;
Begin
Clrscr;
//Считываем необходимые значения:
Readln (n,k);
//Проведя анализ задачи можно увидеть, что если номер начальной кочки кратен номеру «кочке мечты», то мы выводим номер этой кочки. Иначе лягушка будет скитаться по болоту до тех пор, пока не окажется на кочке с номером 1:
If k mod n =0 then writeln (n) else writeln (1);
Readkey;
End.
страница 1
скачать
Другие похожие работы: