結果

問題 No.906 Y字グラフ
ユーザー 👑 obakyan
提出日時 2020-04-18 11:41:52
言語 Lua
(LuaJit 2.1.1734355927)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 829 bytes
コンパイル時間 290 ms
コンパイル使用メモリ 6,948 KB
実行使用メモリ 6,820 KB
最終ジャッジ日時 2024-10-03 23:20:13
合計ジャッジ時間 1,354 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 28
権限があれば一括ダウンロードができます

ソースコード

diff #

local mod = 1000000007LL
local function badd(x, y) return (x + y) % mod end
local function bmul(x, y) return (x * y) % mod end
local function bsub(x, y)
  return x < y and x - y + mod or x - y
end
local function lltonumber(str)
  local ret = 0LL
  for i = 1, #str do
    ret = ret * 10LL + str:sub(i, i):byte() - 48
  end
  return ret
end
local sn = io.read()
local n = lltonumber(sn)
n = n - 4LL
local allsame = n % 3LL == 0LL and 1LL or 0LL
local onediff = 1LL + (n / 2LL)
if n % 3LL == 0LL then
  onediff = onediff - 1LL
end
local alldiff = bmul(500000004LL, bmul((n + 2LL) % mod, (n + 1LL) % mod))
alldiff = bsub(alldiff, allsame)
alldiff = bsub(alldiff, bmul(3LL, onediff))
alldiff = bmul(166666668LL, alldiff) -- 1/6
local ret = (allsame + onediff + alldiff) % mod
local retstr = tostring(ret):gsub("LL", "")
print(retstr)
0