Я вам покажу мое решение задачи на VII открытом чемпионате Харькова.
Задача G. Бананы(измененная для преподавания в школах)
Ограничение по времени: 1 секунда
Ограничение по памяти: 64 Мб
Недавно компания «ООО Шерхан & Табаки» выиграла тендер на поставку бананов в школы для одарённых бандерлогов. По условиям тендера и министерской программы «Равный доступ к качественному питанию», каждый бандерлог в школе должен получить одинаковое количество бананов. К сожалению, руководству компании неизвестно, какая из школ будет осчастливлена этим летом, поэтому было решено отгружать бананы коробками по K бананов в каждой, причём общее количество бананов должно быть минимальным.
После длительных расчётов, перерасчётов и совещаний выяснилось, что возможно один из ящиков будет отправлен в Джунгли неполным. Вот только вопрос о том, сколько бананов положить в этот ящик остался открытым…
Входные данные
В первой строке входного файла записано число N (1 ≤ 1000) – количество бананов, умещающихся в одной коробке. Во второй строке записаны два числа – количества бандерлогов в школах. Все числа во второй строке не превосходят 10 000.
Выходные данные
Следует вывести единственное число — количество бананов в последнем ящике.
Пример
Вх. данные| Вывод
10
4 6 | 2
______
12
4 6 | 12
Вычисляем по формуле: вычисляем наименьшее общее кратное(НОК) и потом от НОК отнимаем количество бананов.Если эти числа равны друг другу, то количество бананов в последнем ящике равно НОК.
Задача G. Бананы(измененная для преподавания в школах)
Ограничение по времени: 1 секунда
Ограничение по памяти: 64 Мб
Недавно компания «ООО Шерхан & Табаки» выиграла тендер на поставку бананов в школы для одарённых бандерлогов. По условиям тендера и министерской программы «Равный доступ к качественному питанию», каждый бандерлог в школе должен получить одинаковое количество бананов. К сожалению, руководству компании неизвестно, какая из школ будет осчастливлена этим летом, поэтому было решено отгружать бананы коробками по K бананов в каждой, причём общее количество бананов должно быть минимальным.
После длительных расчётов, перерасчётов и совещаний выяснилось, что возможно один из ящиков будет отправлен в Джунгли неполным. Вот только вопрос о том, сколько бананов положить в этот ящик остался открытым…
Входные данные
В первой строке входного файла записано число N (1 ≤ 1000) – количество бананов, умещающихся в одной коробке. Во второй строке записаны два числа – количества бандерлогов в школах. Все числа во второй строке не превосходят 10 000.
Выходные данные
Следует вывести единственное число — количество бананов в последнем ящике.
Пример
Вх. данные| Вывод
10
4 6 | 2
______
12
4 6 | 12
Вычисляем по формуле: вычисляем наименьшее общее кратное(НОК) и потом от НОК отнимаем количество бананов.Если эти числа равны друг другу, то количество бананов в последнем ящике равно НОК.
#include using namespace std;
int nok(int a, int b);//Объявляем nok
int kbananov,n1,n2;//думаю тут понятно
int x;
int main () {
cout << "Please enter kbananov"<<endl;
cin >> kbananov>>n1>>n2;
if(kbananov>1000 || (!n1<10000) || (!n2>10000))//если число больше чем надо - выходим
{
exit(0);
}else
{
int x= nok(n1,n2);
x=(x==kbananov) ? kbananov : (x-kbananov) ;//Если х==колличеству бананов,значит х равен количеству бананов, иначе он равен х минус бананы
cout<<"Result= "<<x<<endl;//Выводим результат
return 0;
}
}
int nok(int x, int y)
{
int count=(x>y) ? x : y; //Вычисляем большее число,от которого будем отталкиваться в цикле
for (int i=count; ; i++)
{
if (!(i%x) && !(i%y))//если число i кратно сразу числам x и y,значит это есть наше НОК
{
return i;//Возвращаем НОК
}
}
}
p.s. Учитель не смог решить задачу на дельфи (1.5 часа), а я ее решил (за час).