삼각 제곱수 같습니다. ( OEIS ) 0,

제곱 숫자n^2n이 정수인 형식입니다 . 이것을 제곱근이라고도합니다. 왜냐하면 제곱근을 취하면 정수가되기 때문입니다.

처음 10 개의 제곱 숫자는 다음과 같습니다. ( OEIS )

0, 1, 4, 9, 16, 25, 36, 49, 64, 81


삼각형 숫자 는 정삼각형을 형성 할 있는 숫자입니다. n 번째 삼각형 수는 1에서 n까지의 모든 자연수의 합과 같습니다.

처음 10 개의 삼각형 숫자는 다음과 같습니다. ( OEIS )

0, 1, 3, 6, 10, 15, 21, 28, 36, 45


정사각형 삼각형 숫자 는 정사각형과 삼각형 모두의 숫자입니다.

처음 10 제곱 삼각 숫자는 다음과 같습니다. ( OEIS )

0, 1, 36, 1225, 41616, 1413721, 48024900, 1631432881, 55420693056, 1882672131025, 63955431761796


무한한 수의 제곱 수, 삼각형 수 및 제곱 삼각 숫자가 있습니다.

입력 (매개 변수 또는 stdin) 숫자가 주어진 프로그램 또는 명명 된 함수를 작성하고 n, n제곱 삼각형 숫자를 계산 하고 출력 / 반환합니다. 여기서 n은 0이 아닌 양의 숫자입니다. (n = 1 인 경우 0을 반환)

프로그램 / 함수가 유효한 제출이 되려면 적어도 2 ^ 31-1보다 작은 모든 정사각형 삼각형 숫자를 반환 할 수 있어야합니다.

보너스

2 ^ 63-1 미만의 모든 정사각형 삼각형 숫자를 출력 할 수있는 -4 바이트

이론적으로 모든 크기의 정사각형 삼각형 수를 출력 할 수있는 -4 바이트

비 다항식 시간이 걸리는 솔루션에 +8 바이트 페널티.

보너스 스택.

이것은 코드 골프 챌린지이므로 가장 적은 바이트를 가진 답이 이깁니다.



답변

CJam, 12 8 바이트

XUri{_34*@-Y+}*;

Wikipedia 기사의 반복 관계를 사용합니다.

코드 길이는 16 바이트이며 두 보너스를 모두 충족합니다.

CJam 통역사 에서 온라인으로 사용해보십시오 .

작동 원리

내 코드는 변수 대신 CJam의 스택을 사용한다는 점을 제외하고는 항상 모든 측면에서 xnor의 코드와 동일한 것으로 나타났습니다.

XU               e# Push 1 and 0 on the stack.
                 e# Since 34 * 0 - 1 + 2 = 1, this compensates for 1-based indexing.
  ri{        }*  e# Do int(input()) times:
     _34*        e#   Copy the topmost integer and multiply it by 34.
         @-      e#   Subtract the bottommost integer from the result.
           Y+    e#   Add 2.
               ; e# Discard the last result.


답변

파이썬 2, 45-4-4 = 37

a=1;b=0
exec"a,b=b,34*b-a+2;"*input()
print a

재귀를 사용하여 반복

f(0) = 1
f(1) = 0
f(k) = 34*f(k-1)-f(k-2)+2

이론적으로 이것은 모든 크기의 숫자를 지원하지만 기하 급수적으로 실행되므로 보너스를받을 수 없습니다. 어떤 크기의 숫자에서도 작동합니다. 예를 들어 100의 경우

1185827220993342542557325920096705939276583904852110550753333094088280194260929920844987597980616456388639477930416411849864965254621398934978872054025

재귀 솔루션은 41자를 사용하지만 지수 시간이 걸리기 때문에 자격이 없어야합니다.

f=lambda k:k>2and 34*f(k-1)-f(k-2)+2or~-k


답변

Pyth, 16-4-4 = 8 바이트

OEIS 기사의 재귀 수식을 사용합니다.

K1uhh-*34G~KGtQZ

꽤 새롭고 정말 멋진 사후 할당 명령을 사용합니다. n-11 기반 인덱싱으로 인해 반복 사용 시간이 줄어 듭니다 .

K1            Set K=1
u       tQ    Reduce input()-1 times
         Z    With zero as base case
 hh            +2
  -           Subtract
   *34G       34 times iterating variable
   ~K         Assign to K and use old value
    G         Assign the iterating variable.

n 번 반복되고 각 반복마다 수학 및 대입을 수행하기 때문에 다항식처럼 보이지만 컴퓨터 과학자는 아닙니다. n = 10000을 거의 즉시 완료합니다.

온라인으로 사용해보십시오 .


답변

오아시스 , 7-4-4 = -1 (비경쟁)

34*c-»T

온라인으로 사용해보십시오!

용도 a(0) = 0, a(1) = 1; for n >= 2, a(n) = 34 * a(n-1) - a(n-2) + 2

Oasis는 임의의 정밀 정수를 지원하므로 스택 오버플로가 발생하지 않는 한 임의의 숫자까지 올라갈 수 있습니다. 스택 오버플로로 인해 보너스로 계산되지 않는 경우 알려주십시오. 이 특정 알고리즘이 다항식이 아닌 경우도있을 수 있습니다.

언어는 날짜가 어려워 경쟁이되지 않습니다.

설명:

34*c-»T -> 34*c-»10

a(0) = 0
a(1) = 1
a(n) = 34*c-»

34*c-»
34*    # 34*a(n-1)
   c-  # 34*a(n-1)-a(n-2)
     » # 34*a(n-1)-a(n-2)+2

대체 솔루션 :

-35*d+T

대신에 a(n) = 35*(a(n-1)-a(n-2)) + a(n-3)


답변

자바 스크립트 (ES6), 29-4 = 25 바이트

n=>n>1?34*f(n-1)-f(n-2)+2:n|0

@IsmaelMiguel 덕분에 5 바이트를 절약했습니다 !

무한 재귀를 피하기 위해 0, 1 및 음수를 하드 코딩해야했습니다.

콘솔, 함수의 이름을 다음과 f같이 지정했습니다 .

f(1);  // 0
f(13); // 73804512832419600
f(30); // 7.885505171090779e+42 or 7885505171090779000000000000000000000000000

편집 : JavaScript가 숫자를 16 (15) 자릿수 (사양)로 반올림하면 숫자가 너무 커서 오버플로가 발생합니다. JavaScript 콘솔에 714341252076979033을 넣고 직접 찾으십시오. JavaScript의 한계가 있습니다.


답변

Excel VBA-90 바이트

Wikipedia 페이지에서 되풀이 관계 사용 :

n = InputBox("n")
x = 0
y = 1
For i = 1 To n
Cells(i, 1) = x
r = 34 * y - x + 2
x = y
y = r
Next i

실행되면 n을 입력하라는 프롬프트가 표시되고 n까지의 시퀀스가 ​​열 A에 출력됩니다.

산출

오버플로 오류가 발생하기 전에 n = 202까지 실행할 수 있습니다.


답변

[경쟁 불가] Pyth (14-4-4 = 6 바이트)

K1u/^tG2~KGQ36

OEIS 에서 첫 번째 반복을 사용 했는데, 0,1,36 후에 A n = (A n-1 -1) 2 / A n-2를 찾을 수 있습니다. A이 솔루션은 36에서 시작하기 때문에 경쟁하지 않습니다. 더 낮아지면 0으로 나눕니다 (따라서 0을 입력하면 36이됩니다). 또한 36을 하드 코딩해야했습니다.

여기 사용해보십시오