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

Pythonで最初のN個の自然数の2乗の合計がX以下になるように最大Nを見つけます


与えられた整数Xがあるとすると、最初のN個の自然数の合計が値Xを超えないように、最大​​値Nを見つける必要があります。

したがって、入力がX =7の場合、2はNの可能な最大値であるため、出力は2になります。N=3の場合、級数の合計はX =7を超えます。したがって、1 ^ 2 + 2 ^ 2 + 3 ^ 2 =1 + 4 +9=14。

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

  • 関数sum_of_squares()を定義します。これにはNがかかります

  • res:=(N *(N + 1)*(2 * N + 1))/ 6

  • 解像度を返す

  • メインの方法から、次のようにします-

  • 低:=1

  • 高:=100000

  • N:=0

  • 低-=高、実行

    • 中:=(高+低)/ 2

    • sum_of_squares(mid)− =Xの場合、

      • N:=半ば

      • 低:=中+ 1

    • それ以外の場合

      • 高:=中-1

  • Nを返す

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

def sum_of_squares(N):
   res = (N * (N + 1) * (2 * N + 1)) // 6
   return res
def get_max(X):
   low, high = 1, 100000
   N = 0
   while low <= high:
      mid = (high + low) // 2
      if sum_of_squares(mid) <= X:
         N = mid
         low = mid + 1
      else:
         high = mid - 1
   return N
X = 7
print(get_max(X))

入力

7

出力

2

  1. 最初のn個の自然数の立方和のためのPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 −入力nが与えられた場合、シリーズ13 + 23 + 33 +43+……。+n3の合計をn番目の項まで出力する必要があります。 ここでは、問題ステートメントの解決策に到達するための2つのアプローチについて説明します- ループを使用した強引なアプローチ。 n個の数の合計の数学的解。 アプローチ1 -数値を繰り返して加算することにより、各項の合計を計算する 例 def sumOfSeries(n):    sum = 0    for i in

  2. Pythonを使用して自然数の合計を見つける方法は?

    whileループを使用すると、変数iの値を1ずつ連続してインクリメントし、累積的に追加できます。 s,i=0,0 n=10 while i<n:    i=i+1    s=s+i print ("sum of first 10 natural numbers",s) forループは、自然数の範囲をループして累積的に加算するためにも使用されます。 s=0 for i in range(11):    s=s+i print ("sum of first 10 natural numbers&