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

C ++で数値を除算する際に、小数点以下の桁数をカウントします


2つの整数、たとえばnum1とnum2が与えられます。タスクは、num1をnum2で除算し、これらの指定された数値を除算して小数点以下の桁数を計算することです。

Input − num1 = 2, num2 = 5
Output − count is 1

説明 − 2を5で割ったとき、つまり? =0.4であるため、小数点以下の桁数は1であるため、カウントは1です。

Input − num1 = 2, num2 = 0
Output − Floating point exception (core dumped)

説明 −任意の数値を0で割ると、エラーが返され、プログラムが異常終了します。

Input − num1 = 2, num2 = 3
Output − Infinite

説明 − 2を3で割ると、つまり2/3 =0.666 ...の場合、小数点以下の桁は無限であるため、無限に出力されます。

以下のプログラムで使用されているアプローチは次のとおりです

  • たとえば、num1とnum2の2つの変数を入力します

  • 10進数のカウントを格納する変数カウントを作成し、0で初期化します

  • unordered_mapタイプの変数umを作成します

  • num1%num2!=0

    の間にループを開始します
  • ループ内で、num1をnum1%num2で設定します

  • countの値を1インクリメントします

  • um.find(num1)!=um.end()かどうかを確認してから、-1を返します

  • ループの外側で、カウントの値を返します。

  • 結果を印刷します。

#include <iostream>
#include <unordered_map>
using namespace std;
int countdigits(int x, int y){
   int result = 0; // result variable
   unordered_map<int, int> mymap;
   // calculating remainder
   while (x % y != 0){
      x = x % y;
      result++;
      if (mymap.find(x) != mymap.end()){
         return -1;
      }
      mymap[x] = 1;
      x = x * 10;
   }
   return result;
}
int main(){
   int res = countdigits(2, 5);
   (res == -1)? cout << "count is Infinty" : cout <<"count is "<<res;
   return 0;
}

出力

上記のコードを実行すると、次の出力が得られます-

count is 1

  1. C++で長方形の正方形の数を数える

    =Bとなるように、長さL、幅Bの長方形が与えられます。目標は、サイズLXBの長方形が収容できる正方形の数を見つけることです。 上の図は、サイズ3 X 2の長方形を示しています。2、2X2の正方形、6,1X1の正方形があります。 総正方形=6+ 2=8。 サイズLXBのすべての長方形には、1X1の正方形のL*B数があります。 最大の正方形のサイズはBXBです。 L =B =1の場合、正方形=1。 L =B =2の場合、正方形=1 + 4 =5(2X2の1、1X1の4) L =B =3の場合、正方形=1 + 4 + 9 =14(3X3の​​1、2X2の4、1

  2. C ++で追加するたびにBで割り切れるように、AにN桁を追加しますか?

    ここでは、N桁を追加して数値Aを生成する方法を説明します。各段階で新しい桁を追加すると、別の数値Bで割り切れます。4を追加して5桁の数値を作成するとします。それと余分な数字。 7で除算できるかどうかを確認します。数値は8から始まります。したがって、最初は4が追加されるため、数値は84になり、7で割り切れます。次に、数値に0を加算して、で割り切れるようにします。 7.番号を生成できない場合は、-1が返されます。 アルゴリズム addNDigits(a、b、n) begin    num := a    for all number x from 0 to