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

Pythonのトーナメントでプレイされた試合の数をカウントするプログラム


数nがあるとします。したがって、トーナメントにはいくつかのルールがあるチームがn個あります-

  • チームの数が現在でもある場合、各チームは別のチームとマージされます。そして、合計(n / 2)の試合が行われ、そのうち(n / 2)の勝者チームが次のラウンドに進みます。

  • チームの数が奇数の場合、1つのチームがトーナメントでランダムに移動し、残りのチームがマージされます。したがって、合計(n-1)/ 2試合が行われ、(n-1)/ 2+1チームが勝者として次のラウンドに移動します。

最終的な勝者を獲得するには、プレイされた試合の総数を見つける必要があります。

したがって、入力がn =10の場合、出力は9になります。

  • 最初は5〜5の部門があり、そのうち5つが資格を持ちます

  • ここで、1つのチームをゲームに渡し、2〜2チームを分割して、3チームが資格を得るようにします

  • ここで、1つのチームをゲームに渡し、1対1のチームを分割して、2つのチームが資格を得るようにします

  • 1-1で割ると、1つが勝者として認定されます。

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

  • ans:=0

  • nは1と同じではありませんが、実行してください

    • f:=(n / 2)のフロア

    • 余り:=n mod 2

    • ans:=ans + f

    • n:=f+剰余

  • ansを返す

例(Python)

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

def solve(n):
   ans = 0
   while n != 1:
      f = n//2
      remainder = n % 2
      ans += f
      n = f + remainder

   return ans

n = 10
print(solve(n))
>

入力

10

出力

9

  1. Pythonで合計がkであるパスの数をカウントするプログラム

    二分木と別の値kがあるとすると、合計がkになるサブ子パスへの一意のノードの数を見つける必要があります。 したがって、入力が次のような場合 k =5の場合、パスは[2、3]と[1、4] であるため、出力は2になります。 これを解決するには、次の手順に従います- count:=マップは最初にキー0の値1を保持します ans:=0、プレフィックス:=0 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 プレフィックス:=プレフィックス+ノードの値 ans:=ans +(count [prefix --target]、これが利用できない場合は0にな

  2. Pythonで行列内の囲まれた島の数を数えるプログラム

    バイナリ行列があるとします。ここで、1は土地を表し、0は水を表します。私たちが知っているように、島は周囲が水に囲まれているグループ化された1のグループです。完全に囲まれた島の数を見つける必要があります。 したがって、入力が次のような場合 3つの島があるため、出力は2になりますが、そのうちの2つは完全に囲まれています。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これにはi、jが必要です iとjが行列の範囲内にない場合、 Falseを返す matrix [i、j]が0と同じ場合、 Trueを返す matrix [i、j]:=0 a:=df