정수 , 마지막 자릿수가 각각 1 또는 2 인 2의 거듭 제곱 이 있습니다.
주어 , 가장 작은 찾을 수 같은 그 단지 1 또는 2로 구성되어 있습니다.
들면 , 이후
용 , 이후
참고 대해 , 인 (다시)
입력 :
출력 :
예 :
입력 : 2
출력 : 9입력 : 3
출력 : 89
프로그램은 적당한 시간 내에 실행되어야합니다.
편집 :이 도전에 대한 oeis 시퀀스는 A147884 입니다.
정수 , 마지막 자릿수가 각각 1 또는 2 인 2의 거듭 제곱 이 있습니다.
주어 , 가장 작은 찾을 수 같은 그 단지 1 또는 2로 구성되어 있습니다.
들면 , 이후
용 , 이후
참고 대해 , 인 (다시)
입력 :
출력 :
예 :
입력 : 2
출력 : 9입력 : 3
출력 : 89
프로그램은 적당한 시간 내에 실행되어야합니다.
편집 :이 도전에 대한 oeis 시퀀스는 A147884 입니다.
답변:
(x=0;While[Max@Abs[2IntegerDigits[2^++x,10,#]-3]>1];x)&
IntegerDigits[a,10,r]
의 r
마지막 10 진수 목록을 생성합니다 a
. 3/2를 빼고 모두 -1/2 또는 +1/2인지 확인하십시오.
타이밍 확인 : TIO에서 20 초 동안 r = 1 .. 10
.
k/.FindInstance[Mod[n=0;Nest[#+10^n(2-Mod[#/2^n++,2])&,0,#]-2^k,5^#]==0,k,Integers][[1]]&
이 솔루션은 훨씬 길지만 훨씬 빠릅니다. 에서 제안 경로 취함으로써 OEIS A147884을 통해 갈 OEIS A053312 뿐만 아니라 사용하여 FindInstance
마법을, TIO는 계산 관리 r = 1 .. 12
분 안에.
∞.Δo©‹®I.£2X:`P
온라인으로 시도 하거나 처음 8 개의 테스트 사례를 확인하십시오 (더 이상 시간 초과).
설명:
사실을 사용 가능한 모든 결과에 대해 마지막 숫자를 얻기에 충분한 숫자가 있는지 확인하십시오. 의 자릿수 .
∞.Δ # Find the first positive integer x which is truthy (==1) for:
o # Take 2 to the power the integer: 2^x
© # Store it in variable `®` (without popping)
‹ # Check that it's larger than the (implicit) input: r < 2^x
# (1 if truhy; 0 if falsey)
® # Push variable `®` again: 2^x
I.£ # Only leave the last input amount of digits
2X: # Replace all 2s with 1s
` # Push all digits separated to the stack
P # Take the product of all digits on the stack (including the earlier check)
# (NOTE: Only 1 is truthy in 05AB1E)
당신의 대답에서 영감을 얻었습니다.
n->(k=1;f=4;g=big(16);i=j=2;m=10^n;while i<=n;while digits!(fill(0,i),j)⊈1:2;j,k=j*g%m,k+f;end;i,g,f=i+1,g^5%m,f*5end;k)
다음은 훨씬 짧지 만 r> 8에서는 다른 답변과 마찬가지로 충돌합니다.
f(r,x=big(1))=digits!(fill(0,r),x)⊈1:2&&f(r,2x)+1