이 문제에서는 가장 작은 단위로 1이라는 숫자만 출력하면 됩니다.
reunit은 일반 수학에서 11, 111 또는 1111과 같이 숫자 1만 있는 양수입니다. 재회 형태는 $mathrm{(10*n-1)/9}$
$mathrm{(10*10-1)/9}$는 11을 제공합니다.
$mathrm{(10*100-1)/9}$는 111을 제공합니다.
$mathrm{(10*1000-1)/9}$는 1111을 제공합니다.
위 질문은 단위 자릿수가 3인 양의 정수 N이 주어지며 주어진 숫자 N으로 나누어질 수 있는 가장 작은 단위를 결정해야 한다는 점을 지적합니다.
예를 들어
N=13이라고 하면.
출력: 6
N, 즉 13은 111111의 완전약수이므로 8547이 됩니다.
111111은 13으로 나눌 수 있는 가장 작은 무게 단위입니다. 따라서 가장 작은 가중치 단위의 1의 개수는 6이므로 원하는 출력을 얻을 수 있습니다.
반복 횟수는 1, 11, 111, 1111 등이라는 것을 알고 있기 때문입니다. x 이후의 재결합은 $mathrm{(x*10+1)}$로 정의될 수 있습니다.
이 알고리즘은 정수 N이 나머지 rem을 남기면 재결합된 나머지는 항상 $mathrm{(rem*10+1)%N}$라는 개념에만 기반을 두고 있습니다.
재결합 횟수를 구하는 것은 숫자가 매우 클 수 있기 때문에 너무 지루할 수 있으므로 나머지가 0이 될 때까지 업데이트하고 각 업데이트 단계마다 1의 수를 세어 답을 찾을 것입니다. 나머지를 0으로 만드는 데 필요한 반복 횟수는 가장 작은 가중치 단위에서 1의 개수가 됩니다.
다음은 알고리즘에 대한 단계별 설명입니다.
1단계− 각 N의 나머지를 저장하려면 나머지 변수를 1로 선언합니다. iteration 및 itr은 반복 횟수를 계산하기 위해 1입니다.
2단계− 나머지가 0이 될 때까지 while 루프를 사용합니다. p>
3단계 − 모든 단계에서 나머지를 업데이트하고 itr을 1씩 늘립니다.
4단계−나머지가 0이 되면 itr을 반환합니다.
N=13으로 이 접근 방식을 시도해 보겠습니다.
while 루프 이전에 나머지와 itr을 1로 선언하기 때문입니다.
지금,
첫 번째 반복에서 나머지는 (remainder*10+1)%N, 즉 11이 됩니다. 나머지는 11이고 itr은 2입니다. 나머지가 0이 될 때까지 동일한 알고리즘을 따릅니다.
반복 2에서 나머지=7, itr=3
반복 3에서 나머지=6, itr=4
반복 4에서 나머지=9, itr=5
반복 5에서 나머지는 0이고 itr은 6입니다.
나머지가 0이 되므로 원하는 출력인 itr, 즉 6을 반환합니다.
다음은 위 메서드를 C++로 구현한 것입니다.
으아악23으로 나눌 수 있는 최소 단위는 22개로 구성됩니다.
위 글에서 우리는 한자리 3의 양의 정수 N으로 나누어질 수 있는 가장 작은 단위의 수를 찾는 문제를 해결하려고 했습니다. 이 기사가 이 문제의 개념을 명확히 하는 데 도움이 되기를 바랍니다.
위 내용은 반복되는 숫자에서 1의 최소 개수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!