結果
問題 | No.462 6日知らずのコンピュータ |
ユーザー |
👑 |
提出日時 | 2021-06-10 20:14:42 |
言語 | Lua (LuaJit 2.1.1734355927) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,616 bytes |
コンパイル時間 | 205 ms |
コンパイル使用メモリ | 6,952 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-30 07:00:13 |
合計ジャッジ時間 | 2,118 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 84 |
ソースコード
local mod = 1000000007local mfl = math.floorlocal function bmul(x, y)local x1, y1 = mfl(x / 31623), mfl(y / 31623)local x0, y0 = x - x1 * 31623, y - y1 * 31623return (x1 * y1 * 14122 + (x1 * y0 + x0 * y1) * 31623 + x0 * y0) % modendlocal ffi = require("ffi")local C = ffi.Cffi.cdef[[long long atoll(const char*);]]local function lltonumber(str)return C.atoll(str)endlocal n, k = io.read("*n", "*n", "*l")if k == 0 thenlocal v = 1for i = 2, n dov = bmul(v, i)endprint(v)os.exit()endlocal max = 0LLdolocal mul = 1LLfor i = 1, n domax = max + mulmul = mul + mulendendlocal s = io.read()local a = {}local cmap = {}for w in s:gmatch("%d+") dolocal z = lltonumber(w)local tz = zlocal pop = 0while 0LL < tz doif tz % 2LL == 1LL thenpop = pop + 1endtz = tz / 2LLendif cmap[pop] then print(0) os.exit() endcmap[pop] = trueif 0LL < z and z < max thentable.insert(a, {z, pop})endendif #a == 0 thenlocal v = 1for i = 2, n dov = bmul(v, i)endprint(v)os.exit()endtable.sort(a, function(x, y) return x[2] < y[2] end)local ret = 1dolocal c = a[1][2]for i = 2, c doret = bmul(ret, i)endenddolocal c = a[#a][2]for i = 2, n - c doret = bmul(ret, i)endendfor i = 1, #a - 1 dolocal len = a[i + 1][2] - a[i][2]for i = 2, len doret = bmul(ret, i)endlocal ta, tb = a[i][1], a[i + 1][1]for j = 0, 70 doif ta % 2 == 1 and tb % 2 == 0 thenprint(0) os.exit()endta = ta / 2LLtb = tb / 2LLendendprint(ret)