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

C++에서 두 문자열을 곱하고 결과를 문자열로 반환하는 프로그램

<시간/>

두 개의 숫자가 문자열로 있다고 가정합니다. 우리는 그것들을 곱하고 결과도 문자열로 반환해야 합니다. 따라서 숫자가 "28"과 "25"이면 결과는 "700"이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 두 개의 인수 x와 y를 취하면 x가 y를 나눈다는 것을 나타냅니다.

  • x <−Infinity이고 y =1이면 무한대를 반환합니다.

  • a :=|x|, b :=|y| 및 답변 :=0

  • 동안 a - b>=0

    • 피 :=0

    • 동안 a - (왼쪽으로 이동 b (왼쪽으로 1p 이동))>=0

      • 피 :=피 + 1

    • a :=a − (왼쪽 시프트 b, p번)

    • ans :=ans + 왼쪽 시프트 1p 번

  • x> 0이 참이고 y> 0도 참이면 ans를 반환하고, 그렇지 않으면 (− ans)를 반환합니다.

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   string multiply(string num1, string num2);
};
string Solution::multiply(string nums1, string nums2) {
   int n = nums1.size();
   int m = nums2.size();
   string ans(n + m, '0');
   for(int i = n - 1; i>=0; i−−){
      for(int j = m - 1; j >= 0; j−−){
         int p = (nums1[i] − '0') * (nums2[j] − '0') + (ans[i + j +
         1] − '0');
         ans[i+j+1] = p % 10 + '0';
         ans[i+j] += p / 10 ;
      }
   }
   for(int i = 0; i < m + n; i++){
      if(ans[i] !='0')return ans.substr(i);
   }
   return "0";
}
main(){
   Solution ob;
   cout << ob.multiply("28", "25");
}

입력

"28", "25"

출력

"700"