dc , 46 바이트
[[{}]]sx256?^dd3^8d^1-/8092541**r255/BF*+d0=xP
온라인으로 사용해보십시오!
stdin에 입력하고 stdout에 출력
이것은 원하는 출력에 대한 공식을 기본 -256 숫자로 계산하여 작동합니다. dc의 P 명령은 기본 256 숫자를 문자열로 인쇄하는 데 사용됩니다.
추가 설명 :
n을 입력 n으로하자. dc 프로그램은 다음의 합을 계산합니다
A = 층 (256 ^ n / 255) * 125 (BF는 dc에 의해 11 * 10 + 15 = 125로 해석 됨)
과
B = 바닥 ((256 ^ n) ^ 3 / (8 ^ 8-1)) * 8092541 * (256 ^ n).
A의 경우 :
1 + 256 + 256 ^ 2 + ... + 256 ^ (n-1)은 기하 진행의 공식에 의해 (256 ^ n-1) / 255와 같으며 이는 바닥과 같습니다 (256 ^ n / 255). ). 이것은 기본 256의 n 1로 구성된 숫자입니다.
A를 얻기 위해 125를 곱하면 결과는 기본 256의 n 125로 구성된 숫자입니다 (125는 기본 256의 한 자리 수임). 기본 256의 숫자를 16 진 숫자로 쓰는 것이 좋습니다. 125는 16 진 7D이므로 A는 연속 된 n 7D로 구성된 기본 256 개의 숫자입니다.
B는 비슷합니다.
이번에는 1 + 16777216 + 16777216 ^ 2 + ... + 16777216 ^ (n-1)이 (16777216 ^ n-1) / 16777215와 같고 floor (16777216 ^ n / 16777215)와 같습니다.
이제 256 ^ 3 = 16777216 및 8 ^ 8-1 = 16777215이므로 이것이 floor ((256 ^ n) ^ 3 / (8 ^ 8-1))로 계산됩니다.
기하 계열 표현에서 기본 256의이 숫자는 100100100 ... 1001이며 숫자 중 n은 1이고 나머지 숫자는 0입니다.
여기에는 16B의 7B7B7D 인 8092541이 곱해집니다. 기본 256에서이 숫자는 7B, 7B 및 7D 숫자로 구성되는 3 자리 숫자입니다 (편의를 위해 16 진수로 해당 숫자를 씁니다).
베이스 256으로 작성된 제품은 n 번 반복 된 3 자리 7B 7B 7D로 구성된 3n 자리 숫자이다.
여기에 256 ^ n을 곱하면 4n 자리의 기본 256 개 숫자가 만들어지고 3 자리 7B 7B 7D가 n 번 반복되고 n 0이옵니다. B입니다.
A + B를 추가하면 이제 n 번 반복 된 3 자리 7B 7B 7D로 구성된 4n 자리 기본 256 개의 숫자가 생성되고 n 7D가 생성됩니다. 도 7b 및도 7d는 ASCII 코드이므로 위해 {
하고 }
, 각각이 n 개의 복사본 이루어지는 문자열 인 {{}
의 N 개의 복사본이어서 }
정확히 우리가 N 원하는 무엇> DC에 0으로 P 명령은베이스 (256) 번호를 인쇄 필요에 따라 문자열로
불행하게도, n = 0은 특별한 경우로 취급되어야합니다. 상기 계산은 n = 0에 대해 0의 결과를 산출하며; 이 경우 문자열 인쇄를 하드 코딩했습니다 {}
.