結果

問題 No.64 XORフィボナッチ数列
ユーザー nobigomunobigomu
提出日時 2018-03-25 20:57:04
言語 Lua
(LuaJit 2.1.1696795921)
結果
AC  
実行時間 1 ms / 5,000 ms
コード長 719 bytes
コンパイル時間 119 ms
コンパイル使用メモリ 5,332 KB
実行使用メモリ 4,380 KB
最終ジャッジ日時 2023-09-07 12:05:50
合計ジャッジ時間 814 ms
ジャッジサーバーID
(参考情報)
judge14 / judge11
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
4,380 KB
testcase_01 AC 1 ms
4,380 KB
testcase_02 AC 1 ms
4,380 KB
testcase_03 AC 1 ms
4,380 KB
testcase_04 AC 1 ms
4,376 KB
testcase_05 AC 1 ms
4,380 KB
testcase_06 AC 1 ms
4,380 KB
testcase_07 AC 1 ms
4,376 KB
testcase_08 AC 1 ms
4,380 KB
testcase_09 AC 1 ms
4,376 KB
testcase_10 AC 1 ms
4,376 KB
testcase_11 AC 1 ms
4,376 KB
testcase_12 AC 1 ms
4,376 KB
testcase_13 AC 1 ms
4,376 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 f0,f1,r = C.atol(s0),C.atol(s1),C.atol(n)%3LL
	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

	if r == 0LL then
		return "%s\n", s0
	elseif r == 1LL then
		return "%s\n", s1
	else
		return "%ld\n", f2
	end
end, io.stdin:read("*l")))
0