{Целевой язык не указан, приведу пример на Haskell}
Цена вычисляется как
C - максимальная цена, которую мы можем себе позволить.
Поэтому , где div - оператор целочисленного деления.
Кодmodule Spinner (spinner, maybeTo) whereimport Control.Monad.Fail as MFail (MonadFail, fail) import System.IO (hFlush, stdout)import Text.Read (readMaybe)import Data.Maybe (maybe)maybeTo :: (MonadFail m) => Maybe b -> String -> m bmaybeTo Nothing msg = MFail.fail msgmaybeTo (Just a) _ = return aspinner :: IO ()spinner = do putStr "Enter an A: " hFlush stdout maybeA <- fmap readMaybe getLine :: IO (Maybe Int) a <- maybeTo maybeA "It's not an Int" putStr "Enter an B: " hFlush stdout maybeB <- fmap readMaybe getLine :: IO (Maybe Int) b <- maybeTo maybeB "It's not an Int" putStr "Enter an C: " hFlush stdout maybeC <- fmap readMaybe getLine :: IO (Maybe Int) c <- maybeTo maybeC "It's not an Int" maybe (putStrLn "You can't use 0 with B var!") (putStrLn . ("The maximum spinner's levers number is " ++) . show) (makeNumber a b c) putStrLn ""makeNumber :: Int -> Int -> Int -> Maybe Int makeNumber _ 0 _ = NothingmakeNumber a b c = Just $ div (c - a) b
Произведем вывод формулы расчета количества лопастей:
Так как все операнды целые числа, мы имеем целочисленное деление и целое число в результате. Это сравнимо с округлением вниз, поэтому С по стоимости мы не перепрыгнем.
Код:
#include <iostream>
long long calculate_spin_number(
long long A,
long long B,
long long C
) {
return std::max((C - A) / B, 0ll);
}
int main () {
long long A, B, C;
std::cin >> A >> B >> C;
std::cout << calculate_spin_number(A, B, C) << std::endl;
return 0;
}
Функция calculate_spin_number() рассчитывает количество лопастей по параметрам A, B, C.
(!!) Внимание! Мы не можем использовать int или unsigned int для хранения чисел такого размера как 20000000000. Нужно использовать long или long long.
{Целевой язык не указан, приведу пример на Haskell}
Цена вычисляется как
C - максимальная цена, которую мы можем себе позволить.
Поэтому , где div - оператор целочисленного деления.
Кодmodule Spinner (spinner, maybeTo) whereimport Control.Monad.Fail as MFail (MonadFail, fail) import System.IO (hFlush, stdout)import Text.Read (readMaybe)import Data.Maybe (maybe)maybeTo :: (MonadFail m) => Maybe b -> String -> m bmaybeTo Nothing msg = MFail.fail msgmaybeTo (Just a) _ = return aspinner :: IO ()spinner = do putStr "Enter an A: " hFlush stdout maybeA <- fmap readMaybe getLine :: IO (Maybe Int) a <- maybeTo maybeA "It's not an Int" putStr "Enter an B: " hFlush stdout maybeB <- fmap readMaybe getLine :: IO (Maybe Int) b <- maybeTo maybeB "It's not an Int" putStr "Enter an C: " hFlush stdout maybeC <- fmap readMaybe getLine :: IO (Maybe Int) c <- maybeTo maybeC "It's not an Int" maybe (putStrLn "You can't use 0 with B var!") (putStrLn . ("The maximum spinner's levers number is " ++) . show) (makeNumber a b c) putStrLn ""makeNumber :: Int -> Int -> Int -> Maybe Int makeNumber _ 0 _ = NothingmakeNumber a b c = Just $ div (c - a) bПроизведем вывод формулы расчета количества лопастей:
Так как все операнды целые числа, мы имеем целочисленное деление и целое число в результате. Это сравнимо с округлением вниз, поэтому С по стоимости мы не перепрыгнем.
Код:
#include <iostream>
long long calculate_spin_number(
long long A,
long long B,
long long C
) {
return std::max((C - A) / B, 0ll);
}
int main () {
long long A, B, C;
std::cin >> A >> B >> C;
std::cout << calculate_spin_number(A, B, C) << std::endl;
return 0;
}
Функция calculate_spin_number() рассчитывает количество лопастей по параметрам A, B, C.
(!!) Внимание! Мы не можем использовать int или unsigned int для хранения чисел такого размера как 20000000000. Нужно использовать long или long long.
===========================================================
Если ответ удовлетворил, не забудь отметить его как "Лучший".