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

C++の簡略化された分数


整数nがあるとすると、分母<=nとなるように、0から1(排他的)までのすべての簡略化された分数のリストを見つける必要があります。ここでは、分数は任意の順序にすることができます。

したがって、入力がn =4の場合、出力は["1/2"、 "1/3"、 "1/4"、 "2/3"、"3/4"]のようになります。 / 4 "は、" 1/2 "に簡略化できるため、簡略化された分数ではありません。

これを解決するには、次の手順に従います-

  • 配列retを定義する

  • 初期化i:=2の場合、i <=nの場合、更新(iを1増やします)、実行-

    • 初期化j:=1の場合、j

      • c:=iとjのgcd

      • a:=j / c

      • b:=i / c

      • retの最後に(a as string concatenate "/" concatenate b as string)を挿入します

  • retに存在するすべての一意の要素の配列を返します

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<string> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
public:
   vector<string> simplifiedFractions(int n) {
      vector<string> ret;
      for (int i = 2; i <= n; i++) {
         for (int j = 1; j < i; j++) {
            int c = __gcd(i, j);
            int a = j / c;
            int b = i / c;
            ret.push_back(to_string(a) + "/" + to_string(b));
         }
      }
      set<string> s(ret.begin(), ret.end());
      return vector<string>(s.begin(), s.end());
   }
};
main(){
   Solution ob;
   print_vector(ob.simplifiedFractions(4));
}

入力

4

出力

[1/2, 1/3, 1/4, 2/3, 3/4, ]

  1. C++での質素な数

    この問題では、正の整数Nが与えられます。私たちのタスクは、与えられた数が質素な数であるかどうかをチェックするプログラムを作成することです。 不正な番号 −指定された数の素因数分解の桁数よりも厳密に桁数が多い数。 例 − 625、数625の素因数は5 4です。 。 625の桁数は3です。 5 4の桁数 は2です。 3は厳密に2より大きくなります。したがって、625は質素な数です。 最初のいくつかの質素な数は − 125、128、243、256、343、512、625など。 問題を理解するために例を見てみましょう Input: n = 128 Output: Frugal n

  2. C++五胞体数

    五胞体数は、パスカルの三角形の5番目の数として表されます。ご存知のように、これは5番目の数字です。つまり、パスカルの三角形に少なくとも5つの数字が必要です。したがって、このシリーズの最初の数字は 1 4 6 4 1から始まります。 パスカルの三角形の4行目。したがって、このチュートリアルでは、たとえば、n番目の五胞体数を見つける必要があります Input : 1 Output : 1 Input : 4 Output : 35 次の図から出力を確認できます- この問題については、可能な限り、これは一種のシリーズであるため、ソリューションでこのシリーズのパターンを見つけようと