Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 두 숫자를 더하는 데 필요한 캐리 연산의 수를 계산합니다.

<시간/>

두 개의 숫자 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