Предмет: Информатика, автор: gromnetgrom

Спиннер – модная игрушка c подшипником в основании, к которому прикреплены лопасти. Афанасий открыл бизнес по производству спиннеров. Он выяснил, что за спиннер,у которого N лопастей, покупатели готовы платить A + B × N рублей, но при этом покупатель не станет покупать спиннер, если его цена будет выше C рублей. Определите максимальное число лопастей спиннера, который согласится приобрести покупатель.Программа получает на вход три числа A, B, C (стоимость основания спиннера,стоимость одной лопасти и максимальная стоимость всего спиннера). Все числа – целые положительные, не превосходящие 20000000000 , при этом A ≤ C.Программа должна вывести одно число – максимальное число лопастей спиннера.

Ответы

Автор ответа: MaxLevs
1

{Целевой язык не указан, приведу пример на Haskell}

Цена вычисляется как Price = A + B \times N

C - максимальная цена, которую мы можем себе позволить.

Поэтому N = \max \Leftrightarrow N = (C - A) div B, где div - оператор целочисленного деления.

Код

  • module Spinner (spinner, maybeTo) where
  • import 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 b
  • maybeTo Nothing msg = MFail.fail msg
  • maybeTo (Just a) _ = return a
  • spinner :: 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 _ = Nothing
  • makeNumber a b c = Just $ div (c - a) b

Приложения:
Похожие вопросы
Предмет: Другие предметы, автор: elenakorol84
Предмет: Математика, автор: киса722