dc , 25 22 바이트
9k5v1+2/3?*1-^5v/0k2/p
온라인으로 사용해보십시오!
또는 프로그램을 파일로 저장하고 다음을 입력하여 실행하십시오.
dc -f *filename*
프로그램은 stdin에서 음이 아닌 정수 n 을 받아들이고 stdout 에서 첫 번째 n 짝수 피보나치 수 의 합을 출력합니다 . (피보나치 수열은 OP의 예에 따라 0으로 시작합니다.)
이 프로그램은 첫 번째 n 짝수 피보나치 수의 합으로 공식 (F (3n-1) -1) / 2를 사용합니다. 여기서 F는 F (0) = 0, F (1) = 1, n> = 2 인 경우 F (n) = F (n-2) + F (n-1)
dc는 스택 기반 계산기입니다. 자세한 설명은 다음과 같습니다.
9k # Sets the precision to 9 decimal places (which is more than sufficient).
5v # Push the square root of 5
1+ # Add 1 to the number at the top of the stack.
2/ # Divide the number at the top of the stack by 2.
이 시점에서 숫자 (1 + sqrt (5)) / 2는 스택의 맨 위에 있습니다.
3 # Push 3 on top of the stack.
? # Read a number from stdin, and push it.
\* # Pop two numbers from the stack, multiply them, and push the product
1- # Subtract 1 from the number at the top of the stack.
이 시점에서 3n-1은 스택의 맨 위에 있으며 (여기서 n은 입력), (1 + sqrt (5)) / 2는 맨 위에서 두 번째입니다.
^ # Pop two numbers from the stack (x, then y), compute the power y^x, and push that back on the stack.
5v/ # Divide the top of the stack by sqrt(5).
이 시점에서 스택 맨 위에있는 숫자는 (((1 + sqrt (5)) / 2) ^ (3n-1)) / sqrt (5)입니다. 이 수에 가장 가까운 정수는 F (3n-1)입니다. F (3n-1)은 항상 홀수입니다.
0k # Change precision to 0 decimal places.
2/ # Divide the top of the stack by 2, truncating to an integer.
p # Print the top of the stack on stdout.