สมมุติว่าคนต้องการซื้อสินค้าราคา x แต่ในแต่ละวันที่ผ่านไป ราคาของผลิตภัณฑ์จะเพิ่มขึ้น x เท่าของราคาวันก่อนหน้า เราต้องค้นหาราคาของผลิตภัณฑ์หลังจาก y วันเนื่องจากบุคคลนั้นตัดสินใจซื้อสินค้า หากราคาของผลิตภัณฑ์มากเกินไป คำตอบจะเป็นแบบโมดูโลราคา 10^9 + 7 ข้อมูลที่ป้อนจะแสดงในรายการคู่ ค่าแรกของคู่คือราคาเริ่มต้น x และค่าที่สองคือ y จำนวนวันที่ผ่านไป
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[(5, 2), (6, 8) (2, 12), (2722764242812953792238894584, 3486705296791319646759756475), (1505449742164712795427942455727527, 61649494321438487460747056421546274264)] จากนั้นผลลัพธ์จะเป็น 4096, 754504594, 32955023
ผลลัพธ์ที่ได้คือ 5^2 =25, 6^8 =1679616, 2^12 =4096,2722764242812953792238894584^3486705296791319646759756475 =754504594 (ค่านี้กำหนดเป็นค่าโมดูโล 10^9 + 7) เป็นต้น
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- สำหรับ i ในช่วง 0 ถึงขนาดของ nums ให้ทำ
- x,y :=nums[i, 0], nums[i, 1]
- คืนค่า x กลับเป็นกำลัง y โมดูโล 10^9 + 7
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def dissolve(nums):for i in range(len(nums)) :x,y =nums[i][0], nums[i][1] print(pow(x,y,1000000007)) แก้([(5, 2),(6, 8)(2, 12),(2722764242812953792238894584, 3486705296791319646759756475),(1505449742164712795427942455727527, 61649494321438487460747056421546274264)])
อินพุต
<ก่อนหน้า>[(5, 2),(6, 8),(2, 12),(2722764242812953792238894584, 3486705296791319646759756475),(1505449742164712795427942455727527, 61649494321438487460747056421546274264)]ผลลัพธ์
251679616409675450459432955023