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

Pythonで時間t後に予想されるウイルスの増殖を見つけるプログラム


危険なウイルスがあり、それが急速に増殖するとします。ウイルス細胞の数がx倍に成長する確率は0.5であり、ウイルス細胞の数がy倍に成長する確率も0.5です。ここで、最初にウイルスのセルが1つあった場合は、t時間後に予想されるウイルスセルの数を計算します。答えが大きすぎる場合は、modの結果は10 ^ 9+7になります。

したがって、入力がx =2、y =4、t =1の場合、最初はウイルスにセルが1つしかないため、出力は3になります。 x時間後、確率0.5で、そのサイズは2倍(x2)になり、他の0.5の確率で、そのサイズは4倍になります。したがって、時間t =1以降の予想されるウイルス細胞数は、0.5 * 2 * 1 + 0.5 * 4 * 1=3です。

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

  • m =10 ^ 9 + 7
  • factor:=(x + y)/2のフロア
  • res:=1
  • t> 0の間、do
    • tが奇数の場合、
      • res:=(res * factor)mod m
    • factor:=(factor * factor)mod m
    • t:=t/2のフロア
  • return res

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

m=10**9+7
def solve(x, y, t):
   factor=(x+y)//2
   res=1
   while t > 0:
      if t % 2:
         res = (res*factor) % m
      factor = (factor*factor) % m
      t = t// 2

   return res

x = 2
y = 4
t = 1
print(solve(x, y, t))

入力

2, 4, 1

出力

3

  1. Pythonでポリゴンの領域を見つけるプログラム

    順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの領域を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は15になります。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です return x1 * y2-y1 * x2 メインの方法から、次の手順を実行します N:=ポイントのサイズ (firstx、firsty):=points [0] (prevx、prevy):=(fir

  2. Pythonでマージした後も、最小数の色を見つけるプログラムが残っています

    色のリスト(R、G、B)があるとします。これで、2つの異なる色が隣り合っている場合、それらは3番目の色の単一の色のアイテムに変換できます。そのような変換の可能なシーケンスの後に残っているそれらの最小数を見つける必要があります。 したがって、入力がcolors =[G、 R、 G、 B、 R]の場合、以下のように変換できるため、出力は1になります- これを解決するには、次の手順に従います- n:=色のサイズ 色に異なる色が1つしかない場合は、 return n n <=1の場合、 return n x:=0 d:=キーと値のペアを持つマップ{( R、1)、(