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"
-
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”},
-
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)を返します。