C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

2つの文字列を乗算し、結果をC++の文字列として返すようにプログラムします。


文字列として2つの数値があるとします。それらを乗算し、結果を文字列で返す必要があります。したがって、数値が「28」と「25」の場合、結果は「700」になります

これを解決するには、次の手順に従います-

  • 2つの引数xとyを取ると、xがyを分割することを示します

  • x <−Infinityおよびy =1の場合、無限大を返します

  • a:=| x |、b:=| y |およびans:=0

  • 一方、a − b> =0

    • p:=0

    • 一方、a −(左シフトb(左シフト1 p回))> =0

      • p:=p + 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"

  1. C++で2つのバイナリ文字列を追加するプログラム

    2進数の文字列が2つある場合、それら2つの2進数文字列を加算して得られた結果を見つけ、その結果を2進数文字列として返す必要があります。 2進数は、0または1のいずれかで表される数値です。2つの2進数を加算する際には、2進数の加算規則があります。 0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0, carry 1 入力 str1 = {“11”}, str2 = {“1”} 出力 “100” 入力 str1 = {“110”},

  2. C++で文字列を乗算する

    文字列として2つの数字があるとします。それらを乗算し、結果を文字列で返す必要があります。したがって、数値が「26」と「12」の場合、結果は「312」になります これを解決するには、次の手順に従います- 2つの引数xとyを取ると、xがyを除算することを示します x<-Infinityおよびy=1の場合、無限大を返します a:=| x |、b:=| y |およびans:=0 =0 p:=0 =0 p:=p + 1 a:=a –(左シフトb、p回) ans:=ans+左シフト1p回 0も真の場合は、ansを返します。それ以外の場合は、(– ans)を返します。