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