태그 보관물: base-conversion

base-conversion

Lynch-Bell 번호는 몇 개입니까? 자릿수 숫자 세트가 있으므로 유한 수의

도전

ninput where으로 정수가 주어지면 36 >= n >= 2기본에 몇 개의 Lynch-Bell 숫자가 있는지 출력합니다.n .

출력은 10 진이어야합니다.

린치 벨 번호

다음과 같은 경우 번호는 Lynch-Bell 번호입니다.

  • 모든 숫자는 고유합니다 (숫자 반복 없음)
  • 숫자는 각 숫자로 나눌 수 있습니다
  • 숫자 중 하나로 0을 포함하지 않습니다.

모든 자릿수는 고유해야하며 각 밑면에 유한 한 한 자릿수 숫자 세트가 있으므로 유한 수의 Lynch-Bell 숫자가 있습니다.

예를 들어, 기수 2에는 Lynch-Bell 번호가 하나만 있습니다. 1다른 모든 숫자는 숫자를 반복하거나 0을 포함하기 때문입니다.

Input > Output
2 > 1
3 > 2
4 > 6
5 > 10
6 > 10
7 > 75
8 > 144
9 > 487
10 > 548

Mathematica Online에는 기본 10 이상의 메모리가 부족합니다. 다음 코드를 사용하여 자체 메모리를 생성 할 수 있습니다.

Do[Print[i," > ",Count[Join@@Permutations/@Rest@Subsets@Range[#-1],x_/;And@@(x\[Divides]FromDigits[x,#])]&[i]],{i,10,36,1}]

승리

바이트 단위의 최단 코드가 이깁니다.



답변

젤리 , 13 바이트

Q⁼g
*`Ṗ©bç"®S

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

다른 O (n n ) 솔루션.

설명

Q⁼g  Helper link. Input: digits (LHS), integer (RHS)
Q    Unique (digits)
 ⁼   Match
  g  GCD between each digit and the integer

*`Ṗ©bç"®S  Main link. Input: integer n
*`         Compute n^n
  Ṗ        Pop, forms the range [1, n^n-1]
   ©       Store previous result in register
    b      Convert each integer to base n
     ç"    Call the helper link, vectorized, with
       ®   The register's value
        S  Sum

답변

젤리 , 15 바이트

*ḃ€’Q€Qḍḅ¥€⁸Ạ€S

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

복잡성 .O(nn)


답변

자바 222 212 190 바이트

허먼 덕분에 -10 바이트

Kevin 덕분에 -22 바이트

import java.util.*;a->{int c=0,i=1;A:for(;i<Math.pow(a,a);i++){Set g=new HashSet();for(char b:a.toString(i).toCharArray())if(!g.add(b)|b<49||i%a.parseInt(b+"",a)>0)continue A;c++;}return c;}

언 골프 드 :

a -> {
    int count = 0;
    OUTER:
    for (int i = 1; i < Math.pow(a, a); i++) {
        Set<Character> found = new HashSet<>();
        for (char b : Integer.toString(i, a).toCharArray()) {
            if (!found.add(b) || b == 48 || i % Integer.parseInt(b + "", a) != 0) {
                continue OUTER;
            }
        }
        count++;
    }
    return count;
}

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

많은 수의 경우 매우 느려집니다.


답변

펄 6 , 86 84 77 바이트

Ramillies 덕분에 -2 바이트

->\n{n-1+grep {.Set==$_&&.reduce(* *n+*)%%.all},map {|[X] (1..^n)xx$_},2..^n}

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

TIO에서 n = 8에서 작동합니다.


답변

실제로 24 바이트

;╗DR⌠╜DR╨i⌡M⌠;╜@¿♀%ΣY⌡MΣ

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

설명

이 프로그램은 순열 생성과 Lynch-Bell 테스트의 두 가지 주요 부분으로 구성됩니다. 따라서이 설명은 명확성을 위해 각 부분을 개별적으로 살펴볼 것입니다.

순열 생성

입력 : n(정수[2, 36] )

출력 : 모든 부분 및 전체 순열 [1, n-1]( [1, n-1]길이가에있는 반복없이 값을 포함하는 시퀀스 [1, n-1])

;╗DR⌠╜DR╨i⌡M
;╗            store a copy of n in register 0
  DR          range(1, n)
    ⌠╜DR╨i⌡M  do the following for each element k in range:
     ╜DR        range(1, n)
        ╨       k-permutations of [1, n-1]
         i      flatten

린치 벨 테스트

입력 : 기본 n정수 목록으로, 기본 목록으로 표시됩니다.n 자릿수

출력 : 기본에있는 Lynch-Bell 수 n

⌠;╜@¿♀%ΣY⌡MΣ
⌠;╜@¿♀%ΣY⌡M   for each base-n digit list a:
 ;╜             duplicate a, push n
   @¿           convert a from base-n to decimal
     ♀%         modulo a with each of its base-n digits
       Σ        sum
        Y       boolean negation (1 if all modulo results are 0, else 0)
           Σ  sum (count the 1s in the resultant list)

답변

Mathematica, 82 79 76 바이트

Count[Join@@Permutations/@Subsets@Range[#-1],x_/;x==x~FromDigits~#~GCD~x]-1&

답변

05AB1E , 22 바이트

mLIBε0KÙ}ÙvyIöySIö%O_O

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

O_O 이것이 마침내 작동했을 때도 내 얼굴이었습니다.

<ÝIBJ0Kæ¦Ù€œ˜ 실제 답변에서 숫자를 생성하는 데 사용하는 방법보다 빠르지 만 7보다 큰 것은 임의로 작동하지 않습니다 (명백한 이유는 없습니까?)

설명

mLIBε0KÙ}ÙvyIöySIö%O_O # (input = i)
m                      # Push i^i
 L                     # ...and get a range from one to this value
  IB                   # Map every element to their base i representation
    ε   }              # Map every element to ...
     0K                 # Itself without 0s
       Ù                # ...and only unique digits
         Ù             # Uniquify the resulting list
          v            # For each element...
           yIö          # Push it converted to base 10
              ySIö      # Push every digit of it converted to base 10 in a list
                  %     # Calculate the modulo for each digit
                   O    # Sum all results together
                    _   # Negate: Returns 0 for every positive number and 1 for 0
                     O  # Sum with the rest of the stack (Basically counting all Lynch-Bell-Numbers)
                       # Implicit print