끝없는 숫자에서 자릿수 합계의 첫 번째 발생 찾기

사용자 813801

Pi와 같은 끝없는 숫자의 경우 주어진 숫자 n에 대한 정확한 자릿수 합계를 찾는 방법은 무엇입니까?

예를 들면. n = 20 인 경우

Pi = 3.14159265358979323846264338327950288419716939 ...

첫 번째 발생은 1 + 4 + 1 + 5 + 9 = 20이므로 숫자 1에서 숫자 5까지입니다.

n = 30이면 9 + 2 + 6 + 5 + 3 + 5 = 30이므로 첫 번째 발생은 숫자 5에서 숫자 11까지입니다.

대답에는 작동하는 PHP 데모가 있어야합니다.

우리의

방법 1 (Ashwin Bhat에서 제안)

이 구현에서는 두 개의 피벗을 사용합니다. $pivot_a사이의 자릿수 합계 $pivot_b가 계산됩니다. 합계의 값에 따라 $pivot_b(합이 더 적 으면) 또는 $pivot_a(합이 더 큰 경우) 증가합니다. 합계가 $n이면 중단합니다. 피벗 값은 적절한 숫자 인덱스를 제공합니다.

$pi = "314159265358979323846264338327950288419716939";

$n = 30;

$pivot_a = $pivot_b = 0;
$sum = 0;

for( ; $pivot_b < strlen($pi); ) {

    if($sum < $n) {
        $sum += $pi[$pivot_b++];
    } elseif ($sum > $n) {
        $sum -= $pi[$pivot_a++];
    } else {
        print('Solution found from digit '.$pivot_a.' to '.$pivot_b.'.');
        exit;
    }
}

print('No match was found.');

방법 2

이 구현에서는 하나의 피벗 만 사용하여 숫자 합산을 시작합니다. 합이 원하는 값보다 크면 합을 0으로 재설정하고 피벗을 한 위치로 이동 한 다음 합산을 다시 시작합니다.


$pi = "314159265358979323846264338327950288419716939";

$n = 30;


// Let's sum up all the elements from $pivot until we get the exact sum or a 
// number greater than that. In the latter case, shift the $pivot one place.

$pivot = 0;
$sum = 0;

for($k=0 ; $sum != $n && $k < strlen($pi) ; $k++) {
    $sum += $pi[$k];

    print($pi[$k]);

    if($sum > $n) {
        print(' = '.$sum.'  fail, k='.($pivot+1).PHP_EOL);
        $sum = 0;
        $k = $pivot++;
    } elseif($sum < $n) {
        print("+");
    }
}

print(' = '.$n.' found from digit '.$pivot.' to '.$k.'.');

구현은 그다지 효과적이지 않지만 단계를 설명하려고합니다. 그것은 인쇄

3+1+4+1+5+9+2+6 = 31  fail, k=1
1+4+1+5+9+2+6+5 = 33  fail, k=2
4+1+5+9+2+6+5 = 32  fail, k=3
1+5+9+2+6+5+3 = 31  fail, k=4
5+9+2+6+5+3 = 30 found from digit 4 to 10.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

값의 합이 배열에서 첫 번째 숫자 쌍 찾기

분류에서Dev

RE를 사용하여 문장에서 문자 나 단어 또는 공백의 첫 번째 발생 찾기

분류에서Dev

첫 번째 열의 인덱스 값에 해당하는 두 번째 열에서 가장 작은 숫자 찾기

분류에서Dev

첫 번째 숫자의 첫 번째 색인 찾기

분류에서Dev

지정된 문자로 끝나지 않은 하위 문자열의 첫 번째 발생을 찾는 방법

분류에서Dev

첫 번째 식별자 발생 후 문자열에서 첫 번째 숫자 가져 오기

분류에서Dev

t-sql의 끝에서 문자열에서 char의 첫 번째 발생 인덱스 가져 오기

분류에서Dev

C ++ (Arduino)에서 일부 키워드 발생 후 문자열의 첫 번째 숫자 잡기

분류에서Dev

문자열에서 지정된 문자의 첫 번째 발생을 찾는 알고리즘이 있습니까?

분류에서Dev

숫자의 첫 번째 발생에서 유출 된 셀에 대한 매크로

분류에서Dev

XPath : 자녀와 형제 자매에서 첫 번째 발생 찾기

분류에서Dev

숫자 열에서 첫 번째 숫자 찾기

분류에서Dev

기호의 첫 번째 발생에서 문자열 꼬리 제거

분류에서Dev

사용자의 첫 번째 발생을 찾아 값을 할당합니다.

분류에서Dev

끝의 첫 번째 발생에서 중지하는 sed를 사용하여 하위 문자열 추출

분류에서Dev

문자의 첫 번째 발생과 다른 문자의 첫 번째 발생 사이에서 문자열을 추출하는 방법은 무엇입니까?

분류에서Dev

파일의 각 줄에서 숫자의 첫 번째 항목 찾기

분류에서Dev

JavaScript에서 숫자 쌍 목록의 최소 첫 번째 값 찾기

분류에서Dev

JavaScript에서 숫자 쌍 목록의 최소 첫 번째 값 찾기

분류에서Dev

재귀를 사용하여 첫 번째 문자열에서 두 번째 문자열의 첫 번째 발생 인덱스 가져 오기

분류에서Dev

재귀를 사용하여 첫 번째 문자열에서 두 번째 문자열의 첫 번째 발생 인덱스 가져 오기

분류에서Dev

영숫자 문자열에서 알파벳의 첫 번째 발생을 어떻게 바꿀 수 있습니까?

분류에서Dev

파일의 첫 번째 열에서 발생 횟수 계산

분류에서Dev

숫자의 첫 번째 발생으로 셀 분리

분류에서Dev

#의 첫 번째 발생을 제외하고 임의의 문자열에서 숫자가 아닌 문자 제거

분류에서Dev

R에 여러 숫자가있는 문자열에서 주어진 기호 뒤의 첫 번째 숫자 (소수점 포함)를 추출합니다.

분류에서Dev

R에서 일치 함수를 사용하여 '첫 번째 발생'찾기

분류에서Dev

ksh 쉘 스크립트는 문자열에서 _의 첫 번째 발생을 찾고 그 때까지 모든 것을 제거합니다.

분류에서Dev

R에서 숫자를 다른 숫자의 첫 번째 나눌 수있는 숫자로 변환하는 방법

Related 관련 기사

  1. 1

    값의 합이 배열에서 첫 번째 숫자 쌍 찾기

  2. 2

    RE를 사용하여 문장에서 문자 나 단어 또는 공백의 첫 번째 발생 찾기

  3. 3

    첫 번째 열의 인덱스 값에 해당하는 두 번째 열에서 가장 작은 숫자 찾기

  4. 4

    첫 번째 숫자의 첫 번째 색인 찾기

  5. 5

    지정된 문자로 끝나지 않은 하위 문자열의 첫 번째 발생을 찾는 방법

  6. 6

    첫 번째 식별자 발생 후 문자열에서 첫 번째 숫자 가져 오기

  7. 7

    t-sql의 끝에서 문자열에서 char의 첫 번째 발생 인덱스 가져 오기

  8. 8

    C ++ (Arduino)에서 일부 키워드 발생 후 문자열의 첫 번째 숫자 잡기

  9. 9

    문자열에서 지정된 문자의 첫 번째 발생을 찾는 알고리즘이 있습니까?

  10. 10

    숫자의 첫 번째 발생에서 유출 된 셀에 대한 매크로

  11. 11

    XPath : 자녀와 형제 자매에서 첫 번째 발생 찾기

  12. 12

    숫자 열에서 첫 번째 숫자 찾기

  13. 13

    기호의 첫 번째 발생에서 문자열 꼬리 제거

  14. 14

    사용자의 첫 번째 발생을 찾아 값을 할당합니다.

  15. 15

    끝의 첫 번째 발생에서 중지하는 sed를 사용하여 하위 문자열 추출

  16. 16

    문자의 첫 번째 발생과 다른 문자의 첫 번째 발생 사이에서 문자열을 추출하는 방법은 무엇입니까?

  17. 17

    파일의 각 줄에서 숫자의 첫 번째 항목 찾기

  18. 18

    JavaScript에서 숫자 쌍 목록의 최소 첫 번째 값 찾기

  19. 19

    JavaScript에서 숫자 쌍 목록의 최소 첫 번째 값 찾기

  20. 20

    재귀를 사용하여 첫 번째 문자열에서 두 번째 문자열의 첫 번째 발생 인덱스 가져 오기

  21. 21

    재귀를 사용하여 첫 번째 문자열에서 두 번째 문자열의 첫 번째 발생 인덱스 가져 오기

  22. 22

    영숫자 문자열에서 알파벳의 첫 번째 발생을 어떻게 바꿀 수 있습니까?

  23. 23

    파일의 첫 번째 열에서 발생 횟수 계산

  24. 24

    숫자의 첫 번째 발생으로 셀 분리

  25. 25

    #의 첫 번째 발생을 제외하고 임의의 문자열에서 숫자가 아닌 문자 제거

  26. 26

    R에 여러 숫자가있는 문자열에서 주어진 기호 뒤의 첫 번째 숫자 (소수점 포함)를 추출합니다.

  27. 27

    R에서 일치 함수를 사용하여 '첫 번째 발생'찾기

  28. 28

    ksh 쉘 스크립트는 문자열에서 _의 첫 번째 발생을 찾고 그 때까지 모든 것을 제거합니다.

  29. 29

    R에서 숫자를 다른 숫자의 첫 번째 나눌 수있는 숫자로 변환하는 방법

뜨겁다태그

보관