結果

問題 No.64 XORフィボナッチ数列
ユーザー nobigomunobigomu
提出日時 2018-03-25 21:10:49
言語 Lua
(LuaJit 2.1.1696795921)
結果
AC  
実行時間 2 ms / 5,000 ms
コード長 699 bytes
コンパイル時間 318 ms
コンパイル使用メモリ 5,288 KB
実行使用メモリ 4,504 KB
最終ジャッジ日時 2023-09-07 12:06:32
合計ジャッジ時間 1,132 ms
ジャッジサーバーID
(参考情報)
judge15 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
4,380 KB
testcase_01 AC 1 ms
4,384 KB
testcase_02 AC 1 ms
4,380 KB
testcase_03 AC 1 ms
4,380 KB
testcase_04 AC 1 ms
4,384 KB
testcase_05 AC 1 ms
4,384 KB
testcase_06 AC 1 ms
4,380 KB
testcase_07 AC 1 ms
4,504 KB
testcase_08 AC 1 ms
4,380 KB
testcase_09 AC 1 ms
4,380 KB
testcase_10 AC 1 ms
4,380 KB
testcase_11 AC 2 ms
4,380 KB
testcase_12 AC 1 ms
4,380 KB
testcase_13 AC 1 ms
4,384 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

local ffi = require 'ffi'
local C = ffi.C

ffi.cdef [[
long atol(const char *str);
int printf(const char *fmt, ...);
]]

C.printf((function (f, s)
	return f(s)
end)(function (s)
	local s0,s1,n = s:match("(%d+)%s(%d+)%s(%d+)")
	local r = C.atol(n)%3LL

	if r ~= 2LL then return "%s\n", (r == 0LL and s0 or s1) end

	local f0,f1 = C.atol(s0),C.atol(s1)
	local f2,p = 0LL,1LL
	while f0 ~= 0LL and f1 ~= 0LL do
		f0,f1,f2,p = f0/2LL,f1/2LL,f2+p*(f0%2LL ~= f1%2LL and 1LL or 0LL),p*2LL
	end
	if f0 ~= 0LL then while f0 ~= 0LL do f0,f2,p = f0/2LL,f2+p*(f0%2LL),p*2LL end end
	if f1 ~= 0LL then while f1 ~= 0LL do f1,f2,p = f1/2LL,f2+p*(f1%2LL),p*2LL end end

	return "%ld\n", f2
end, io.stdin:read("*l")))
0