_
Пошаговое объяснение:
№1 5л.
№2 9л.
Наполняем №2
Переливаем 5л из №2 в №1 ( В №2 4л. В №1 5л.)
Переливаем 4л. из №2 в №1 ( В №2 0л. В №1 4л.)
Наполняем №2 ( В №2 9л. В №1 4л.)
Переливаем 1л. в №1 ( В №2 8л. В №1 5л.)
Опустошаем №1 и переливаем туда из №2 5л. ( В №2 3л. В №1 5л.)
Входные:60 и 2, выйти должно число 11. Входные: -1 и 1, выйти должно 108.
Алгоритм:С виду простая задача, но очень много условий должно выполняться:
Это «круг», то есть если число больше 109, то идем по второму кругу и т.д.Возможно движение в обратную сторонуДа и еще кучка…Объяснять здесь нечего, главное не запутаться и выполнить все условия:D
Решение:Решение на СИ:
#include <stdio.h> int main() { int vasya,t,v,s; scanf("%d%d",&v,&t); if (v*t > 0) { vasya = (v * t) % 109; } else { if (v*t<=0) { vasya = (109 + ((v * t) % 109)) % 109; } } printf("%d", vasya); return 0; }Решение на Паскале:
var vasya,t,v,s:integer; begin readln(v,t); if (v*t>0) then begin vasya := (v * t) mod 109; end else if (v*t<=0) then begin vasya := (109 + ((v * t) mod 109)) mod 109; end; writeln(vasya); end.
1 ведро - 9 литров
второе - 5 литров
берешь полное первое ведро, наливаешь во второе
получается
4 и 5 литров
выливаешь
5 литров
наливаешь 4 литра в ведро второе
наполняешь 9 литровое ведро
льёшь один литр ко второму ведру
получается
8 и 5 литров
второе ведро
выливаешь
наливаешь первое
и вуаля
в первом ведре 3 литра