두 개의 숫자 num_1과 num_2가 제공됩니다. 목표는 숫자가 추가될 때 필요한 캐리 연산의 수를 계산하는 것입니다. 숫자가 123과 157이면 캐리 연산은 1이 됩니다. (7+3=10, 1+2+5=8, 1+1=2 ).
예를 들어 이해하자
입력 - num_1=432 num_2=638
출력 − 두 수를 더하는 데 필요한 캐리 연산의 수는 − 2
입니다.설명 − 오른쪽에서 왼쪽으로 숫자 추가 및 캐리 계산 −
(2+9=10, carry 1 ) count=1, (1+3+3=7, carry 0 ) count=1, (4+6=10, carry 1 ) count=2
입력 - num_1=9999 num_2=111
출력 − 두 수를 더하는 데 필요한 캐리 연산의 수는 − 4
입니다.설명 − 오른쪽에서 왼쪽으로 숫자 추가 및 캐리 계산 −
(9+1=10, carry 1 ) count=1, (1+9+1=11, carry 1 ) count=2, (1+9+1=11, carry 1 ) count=3, (1+9=10, carry 1) count=4
아래 프로그램에서 사용한 접근 방식은 다음과 같습니다.
두 숫자를 모두 문자열로 변환합니다. 문자열의 끝에서 순회를 시작하고, 문자를 정수로 변환하고, 값>10이면 캐리를 1로 설정합니다. 캐리가 1인 경우 캐리의 증분 카운트입니다.
-
두 개의 숫자를 num_1 및 num_2로 사용합니다.
-
carry_add_two_numbers(num_1, num_2) 함수는 숫자를 모두 취하여 둘 다 더할 때 필요한 캐리 횟수를 반환합니다.
-
to_string(x)을 사용하여 두 숫자를 모두 문자열로 변환하고 str_1 및 str_2에 저장합니다.
-
length()를 lenght_str_1 및 length_str_2로 사용하여 두 문자열의 길이를 가져옵니다.
-
초기 카운트를 0으로, 초기 캐리도 0으로 간주합니다.
-
두 길이 모두 0이 아닌 동안.
-
마지막 문자에서 정수로 계속 변환하고 정수를 변수 i와 j에 저장합니다.
-
두 문자열의 길이를 줄입니다.
-
i+j+carry로 추가할 변수를 가져옵니다.
-
더하기>10이면 카운트를 증가시킵니다. 그리고 cary=1을 설정합니다. 그렇지 않으면 다음 반복을 위해 carry=0을 설정합니다.
-
모든 반복이 끝나면 카운트에 총 캐리 수가 표시됩니다.
-
결과로 카운트를 반환합니다.
예시
#include <bits/stdc++.h> using namespace std; int carry_add_two_numbers(int num_1, int num_2){ string str_1 = to_string(num_1); int length_str_1 = str_1.length(); string str_2 = to_string(num_2); int length_str_2 = str_2.length(); int count = 0, carr = 0; while(length_str_1 != 0 || length_str_2 != 0){ int i = 0, j = 0; if (length_str_1 > 0){ i = str_1[length_str_1 - 1] - '0'; length_str_1--; } if (length_str_2 > 0){ j = str_2[length_str_2 - 1] - '0'; length_str_2--; } int add = i + j + carr; if (add >= 10){ carr = 1; count++; } else{ carr = 0; } } return count; } int main(){ int num_1 = 234578; int num_2 = 1234; int count = carry_add_two_numbers(num_1, num_2); cout<<"Count of number of carry operations required to add two numbers are: "<<count; return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Count of number of carry operations required to add two numbers are: 2