[R55A]一元一次方程

  • 难度 入门
  • 时限 1s
  • 空限 512m
  • 数学

对于 100%100\% 的数据,1a1061 \leq a \leq 10^61bc1061 \leq b \leq c \leq 10^6

思路

由方程 ax+b=cax + b = c 移项得 y=cbay = \dfrac{c - b}{a}。题目保证 cbc \geq b,因此 y0y \geq 0。题目要求输出不大于 yy 的最大整数,也就是 y\lfloor y \rfloor

对非负数而言,整数的下取整就是整除:直接计算 (cb)/a(c - b) / a 即可,无需浮点数。

以样例 2 为例:cb=1919810114514=1805296c - b = 1919810 - 114514 = 18052961805296/123456=141805296 / 123456 = 14(整除),与样例输出一致。

复杂度

  • 时间复杂度:O(1)O(1)
  • 空间复杂度:O(1)O(1)

仓颉实现

import std.env.*
import std.convert.*

main(): Int64 {
    let reader = getStdIn()
    let v = reader.readln().getOrThrow().split(" ", removeEmpty: true).map({ p: String => Int64.parse(p) })
    let a = v[0]
    let b = v[1]
    let c = v[2]
    println((c - b) / a)
    return 0
}