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

C++でa^2 + b ^ 2 =c^2および1<=a <=b <=c <=nとなるようにトリプレット(a、b、c)の数を数えます


整数nが与えられます。目標は、条件を満たすトリプレット(3つの数字のセット)を見つけることです-

  • a 2 + b 2 =c 2

  • 1 <=a <=b <=c <=n

これを行うには、1 <=a<=nと1<=b<=nの値に対して2つのループを実行します。それに応じてcを計算し(c =sqrt(a2 + b2))、条件1と2の両方が満たされた場合はカウントをインクリメントします。

例を挙げて理解しましょう。

入力 − n =5

出力 −トリプレットの数− 1

説明

for a=3, b=4 and c=5 both conditions are met.

入力 − n =3

出力 −トリプレットの数− 0

説明

条件1および2を満たすそのようなトリプレットはありません。

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

  • 整数Nは、範囲[1、N]の最後の制限を格納します。

  • 関数countTriplets(int n)はnを取り、a 2 の条件を満たすトリプレットの数を返します。 + b 2 =c 2 および1<=a <=b <=c <=n

  • 変数countは、そのようなトリプレットの数を格納します。最初は0です。

  • 変数sumは、aとbの2乗の合計を格納します。

  • a=1からnおよびb=aからnから始めて、sum =a * a + b * bおよびcを合計の平方根(sqrt(sum))として計算します。

  • 計算されたcの値が、c * c==sumおよびb<=c &&c <=nの場合(条件1と2の両方が満たされます)。

  • 現在のa、b、cとしてのインクリメントカウントは、両方の条件を満たす。

  • a=nおよびb=nになるまでこれを実行します。最終的に、カウントには、条件を満たすようなトリプレットがいくつか含まれます。

  • 必要な結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
int countTriplets(int n){
   int count = 0;
   int a,b,c;
   a=b=c=1;
   int sum=0;
   for (a = 1; a <= n; a++) //1<=a<=n{
      for (b = a; b <= n; b++) //1<=a<=b<=n{
         sum = a*a + b*b; //a^2 + b^2 =c^2
         c = sqrt(sum);
         if (c * c == sum && b<=c && c<=n) //check 1<=a<=b<=c<=n{
            count++;
            cout<<endl<<"a :"<<a<<" b :"<<b<<" c :"<<c; //to print triplets
         }
      }
   }
   return count;
}
int main(){
   int N = 15;
   cout <<endl<< "Number of triplets : "<<countTriplets(N);
   return 0;
}

出力

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

Number of triplets :
a :3 b :4 c :5
a :5 b :12 c :13
a :6 b :8 c :10
a :9 b :12 c :154
Number of triplets : 4

  1. C ++でK%p =0およびq%K=0となる最小数Kを見つけます

    2つの整数PとQがあるとします。KmodP=0とQmodK =0のように、最小の数Kを見つける必要があります。それ以外の場合は-1を出力します。したがって、PとQが2と8の場合、Kは2になります。2mod2 =0、8モード2=0として。 Kを可能にするには、QをPで割り切れる必要があります。したがって、P mod Q =0の場合はPを出力し、そうでない場合は-1を出力します。 例 #include<iostream> using namespace std; int getMinK(int p, int q) {    if (q % p == 0) &nbs

  2. xとその桁の合計がC++で指定されたnと等しくなるような数xを見つけます

    ここで、1つの問題が発生します。ここで、数値nを取得する場合、x +桁の合計xが指定された数値nと同じになるように、xなどの別の値を見つける必要があります。 nの値が21であると仮定します。このプログラムは、15+桁の合計15、つまり15 + 1 + 5 =21=nとして数値x=15を返します。 この問題を解決するには、単純なアプローチに従う必要があります。 1からnまで繰り返し、各繰り返しで、数値とその桁の合計の合計が数値と同じであるかどうかを確認し、停止します。それ以外の場合は続行します。 例 #include<iostream> using namespace std; i