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

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 9, do
      temp := a * 10 + x
      if temp mod b is 0, then
         a := temp
         break
      end if
   done
   if num = a, then
      return -1
   end if
   add remaining 0’s with a
   return a.
end

#include<iostream>
using namespace std;
int add_n_digits(int a, int b, int n) {
   int num = a;
   for (int i = 0; i <= 9; i++) { //test by adding all digits (0-9)
      int tmp = a * 10 + i;
      if (tmp % b == 0) {
         a = tmp; //update a after adding
         break;
      }
   }
   if (num == a) //if no digit is added, return -1
      return -1;
   for (int j = 0; j < n - 1; j++) //after getting divisible number, add 0s
      a *= 10;
   return a;
}
main() {
   int a, b, n;
   cout << "Enter A, B and N: ";
   cin >> a >> b >> n;
   int res = add_n_digits(a, b, n);
   if(res == -1) {
      cout << "Unable to get this type of number";
   } else {
      cout << "Result is " << res;
   }
}

出力

Enter A, B and N: 8 7 4
Result is 84000

出力

Enter A, B and N: 10 11 5
Unable to get this type of number

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

    a、b、nが与えられます。そして、次の条件を考慮し、反復ごとにbで割り切れるようなn桁をaに追加するための最適なソリューションを見つける必要があります。 aに数字を追加します そのようなa 追加した後、 a bで割り切れる 。 aの最小値を出力します step1をn回繰り返した後に可能。 印刷失敗 操作が失敗した場合。 数字を追加するたびに除算を確認してください。 入力 a=5 b=4 n=4 出力 52000 説明 0から追加される最初の桁 〜 9 、どの数字も aにならない場合 bで割り切れる 答えは-1 つまり、if n aに数字が追

  2. 各単語が回文であるように単語を分割する方法の数を見つけるためのC++プログラム

    ここでは、各単語が回文になるように単語を分割するいくつかの方法を見つけるためのC++プログラムについて説明します。 アルゴリズム Begin    Take the word as input.    Function partitionadd(vector<vector<string> > &u, string &s, vector<string> &tmp, int index):    if (index == 0)       tmp.c