結果

問題 No.316 もっと刺激的なFizzBuzzをください
ユーザー toshiro_yanagitoshiro_yanagi
提出日時 2018-06-23 14:59:50
言語 Nim
(2.0.2)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 783 bytes
コンパイル時間 764 ms
コンパイル使用メモリ 63,420 KB
最終ジャッジ日時 2024-04-27 02:34:27
合計ジャッジ時間 1,191 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
/home/judge/data/code/Main.nim(6, 25) Error: attempting to call undeclared routine: 'safeAdd'

ソースコード

diff #

import strutils

proc input: string =
  while true:
    let t = stdin.readChar
    if t.isDigit: result.safeAdd t
    elif t == '\r': discard
    else: break

proc gcd(x0, y0: int): int =
  var (x, y) = (x0, y0)
  if x < y: swap(x, y)
  while y > 0:
    let r = x mod y
    (x, y) = (y, r)
  result = x

let
  N, a, b, c = input().parseInt
var
  arr = @[a]
  cnt = 0

if b mod a != 0: arr.add b
if c mod a != 0 and c mod b != 0: arr.add c
for v in arr: cnt += N div v

if arr.len != 1:
  var arr2 = newSeq[int]()
  for i in 0 ..< (if arr.len == 3: 3 else: 1):
    let (x, y) = (arr[i], arr[(i + 1) mod arr.len])
    arr2.add x * y div gcd(x, y)
  for v in arr2: cnt -= N div v

  if arr.len != 2:
    let ab = (a * b) div gcd(a, b)
    cnt += N div (ab * c div gcd(ab, c))

echo cnt
0