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

C++で与えられた方程式の解の数を見つけます


この問題では、3つの整数値A、B、Cが与えられます。私たちのタスクは、与えられた方程式の解の数を見つけることです。 。

方程式

X = B*Sm(X)^A + C

ここで、Sm(X)はXの桁の合計です。

Xのすべての値を、Xが1から10 9 までの任意の数である上記の式を満たすようにカウントする必要があります。 。

問題を理解するために例を見てみましょう

入力

A = 3, B = 6, C = 4

出力

3

ソリューションアプローチ

この問題を解決するための解決策は、Xの値の数を数えることです。このため、桁の合計が重要な役割を果たします。最大桁合計は81です(最大値999999999の場合)。そして、合計の値ごとに、方程式の解を得ることができます。

等しいフォーム値1から81を満たす値をカウントします。

ソリューションの動作を説明するプログラム

#include <bits/stdc++.h>
using namespace std;
int countSolutions(int a, int b, int c){
   int solutionCount = 0;
   for (int digSum = 1; digSum <= 81; digSum++) {
      int solVal = b * pow(digSum, a) + c;
      int temp = solVal;
      int sum = 0;
      while (temp) {
         sum += temp % 10;
         temp /= 10;
      }
      if (sum == digSum && solVal < 1e9)
         solutionCount++;
   }
   return solutionCount;
}
int main(){
   int a = 3, b = 6, c = 4;
   cout<<"The number of solutions of the equations is "<<countSolutions(a, b, c);
   return 0;
}

出力

The number of solutions of the equations is 3

  1. 与えられたグラフのブリッジエッジの数を見つけるためのC++プログラム

    n個の頂点とm個のエッジを含む重み付けされていない無向グラフが与えられたとします。グラフのブリッジエッジは、グラフを削除するとグラフが切断されるエッジです。与えられたグラフでそのようなグラフの数を見つける必要があります。グラフには、平行なエッジや自己ループは含まれていません。 したがって、入力がn =5、m =6、edges ={{1、2}、{1、3}、{2、3}、{2、4}、{2、5}、{3 、5}}の場合、出力は1になります。 グラフには、{2、4}のブリッジエッジが1つだけ含まれています。 これを解決するには、次の手順に従います- mSize := 100 Define an

  2. 与えられた文字列の順列の数を見つけるためのC++プログラム

    文字列の文字をさまざまな順序で並べることができます。ここでは、特定の文字列から形成できる順列の数をカウントする方法を説明します。 1つの文字列が「abc」の場合はわかります。 3つの文字があります。 3つにアレンジできます! =6つの異なる方法。したがって、n文字の文字列は、nに配置できます。違う方法。しかし、aabのように同じ文字が複数回存在する場合、6つの順列はありません。 aba aab baa baa aab aba ここで、(1,6)、(2、5)、(3,4)は同じです。したがって、ここでは順列の数は3です。これは基本的に(n!)/(複数回発生しているす