두 개의 양의 정수를 곱하는 비주류 알고리즘
n과 m이 두 개의 양의 정수라고 가정하고 n*m을 계산한 후 이제 n의 입력을 인스턴스 크기의 척도로 사용합니다.
n이 짝수라고 가정하면 원래 크기의 절반인 인스턴스는 n/2, n*m=n/2 * 2m을 처리해야 합니다
n이 홀수라고 가정하면 공식 n*m=(n-1)/2 * 2m만 간단히 조정하면 됩니다
그리고 종료 조건으로 1*m=m을 사용하세요.
예를 적어보면 현재 n 값이 모두 홀수일 때 해당 m 값만 더하면 n*m의 곱을 얻을 수 있다는 것을 알 수 있습니다.
예: 50*65=25*130=12*260 (+130)=6*520=3*1040=1*2080===2080+1040+130=3250
코드 구현을 시작해 보겠습니다.
#포함 <iostream><br>
네임스페이스 표준 사용;</iostream>
int 메인()
{
int n,m,mul=0;
cin>>n>>m;
for(int i=n>>1;i>=1;i=i>>1)
{
m=m
위 내용은 알고리즘 - 러시아어 곱셈의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!