C++の貧しい豚
1000個のバケツがあり、そのうちの1つは有毒で、他のバケツは水で満たされているとします。それらはすべて似ています。豚が毒を飲むと、15分以内に死んでしまいます。 1時間以内に有毒なバケツを見つけるために必要な豚の最小量はどれくらいですか?
そこで、一般的なケースを考えて、このためのアルゴリズムを考案します。したがって、一般的なケースでは、n個の異なるバケツがあり、毒を飲んでいる豚がm分以内に死亡する場合、p分以内に有毒なバケツを見つけるには何匹の豚が必要ですか?毒の入ったバケツは1つだけです。
n =1000、m =15、p =60の場合、出力は5になります。
これを解決するには、次の手順に従います-
- ret:=0
- while(minutesToTest / minutesToDie + 1)^ ret <バケット、実行-
- (retを1増やします)
- return ret
理解を深めるために、次の実装を見てみましょう-
例
#include <bits/stdc++.h> using namespace std; class Solution { public: int poorPigs(int buckets, int minutesToDie, int minutesToTest) { int ret = 0; while(pow((minutesToTest / minutesToDie + 1), ret) < buckets) ret++; return ret; } }; main(){ Solution ob; cout << (ob.poorPigs(1000,15,60)); }
入力
1000 15 60
出力
5
-
C++でゲームVをジャンプする
arrと呼ばれる整数の配列と整数dがあるとします。 1つのステップで、インデックスiから-にジャンプできます。 i + xここで、i +x
-
C++の4つの除数
整数配列numsがあるとすると、正確に4つの除数を持つその配列内の整数の約数の合計を見つける必要があります。したがって、配列にそのような整数がない場合は、0を返します。たとえば、入力が[21、4、7]の場合、21には4つの除数1、3、7、21があるため、出力は32になります。 4には3つの除数1、2、4があり、7には2つの除数1と7があります。答えは21の約数の合計のみです。 これを解決するには、次の手順に従います- ok()というメソッドを定義します。これはxを入力として受け取ります ret:=1 + x、cnt:=2 i:=2の場合、i ^ 2 <=x、iを1増やしま