ฉันต้องการคำนวณค่า
X =n!/2^r
where n<10^6 and r<10^6
and it's guarantee that value of X is between O to 10
วิธีคำนวณ X เนื่องจากฉันไม่สามารถหารค่าแฟกทอเรียลและค่ากำลังอย่างง่ายได้เนื่องจากมันล้นจำนวนเต็มยาว
แนวทางของฉัน
ทำด้วยความช่วยเหลือของโมดูลัส สมมุติว่าเป็นจำนวนเฉพาะที่มากกว่า 10 สมมุติว่า 101
X= [(Factorial N%101)*inverse Modulo of(2^r)]%101;
โปรดทราบว่าโมดูโลผกผันสามารถคำนวณได้ง่ายและสามารถคำนวณ 2^r%101 ได้เช่นกัน
ปัญหา:
ไม่ได้รับประกันว่า X จะเป็นจำนวนเต็มเสมอ และสามารถ ลอยตัว ได้เช่นกัน วิธีการของฉันทำงานได้ดีเมื่อ X เป็นจำนวนเต็ม ? วิธีรับมือเมื่อ X เป็นตัวเลขทศนิยม
3/2.0*4/2.0*5/2.0*...
ล่ะ? - person barak manos   schedule 07.02.2017