สมมติว่าเรามีจำนวนเต็ม X ที่กำหนด เราต้องหาค่าสูงสุด N เพื่อให้ผลรวมของจำนวนธรรมชาติ N ตัวแรกไม่ควรเกินค่า X
ดังนั้น หากอินพุตเท่ากับ X =7 ผลลัพธ์จะเป็น 2 เนื่องจาก 2 คือค่าสูงสุดที่เป็นไปได้ของ N สำหรับ 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
-
ไม่มี :=0
-
ในขณะที่ต่ำ −=สูง ทำ
-
กลาง :=(สูง + ต่ำ) / 2
-
ถ้า sum_of_squares(กลาง) −=X แล้ว
-
N :=กลาง
-
ต่ำ :=กลาง + 1
-
-
มิฉะนั้น
-
สูง :=กลาง - 1
-
-
-
กลับ N
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def sum_of_squares(N):res =(N * (N + 1) * (2 * N + 1)) // 6 คืนค่า resdef get_max(X):ต่ำ, สูง =1, 100000 N =0 ในขณะที่ต่ำ <=สูง:กลาง =(สูง + ต่ำ) // 2 ถ้า sum_of_squares(กลาง) <=X:N =กลางต่ำ =กลาง + 1 อื่น:สูง =กลาง - 1 คืน NX =7print(get_max(X))ก่อน>อินพุต
7เอาท์พุต
2