Berikut ini adalah pertanyaan dari qed pada mata pelajaran TI untuk jenjang Sekolah Dasar
Bilangan basis = 9999 (input)
Eksponen = 9999 (input)
Modulus = 10 (input)
9999^9999 mod 10 = 9
Jangan lupa, ujilah fungsi yang sudah Anda buat dengan beberapa masukan lain.
Jawaban dan Penjelasan
Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.
Kode Program Python
INVALID_ENTRY = -9999
def powermod(basis, eksponen, modulus):
if basis < 1 or eksponen < 0 or modulus < 1:
return INVALID_ENTRY
if eksponen == 1:
return basis % modulus
hasil = powermod(basis, eksponen // 2, modulus)
hasil = hasil*hasil % modulus
if eksponen & 1 == 1:
hasil = hasil * basis % modulus
return hasil
# Program Utama
if __name__ == '__main__':
while True:
basis = int(input("Bilangan basis = "))
eksponen = int(input("Eksponsn = "))
modulus = int(input("Modulus = "))
print("========================")
print("⇒ {b:d}^{e:d} mod {m:d} = {h:d}\n"
.format(b = basis, e = eksponen, m = modulus,
h = powermod(basis, eksponen, modulus)))
cobalagi = input("Mau coba lagi? (y/t) ")
if cobalagi in "Yy":
# coba lagi
print()
continue
else:
if cobalagi in "Tt":
# selesai
print("OK deh. Selesai ya.\n")
else:
print("Ngawur kamu! Nggak jelas deh!\n")
break
### END OF PROGRAM ###
________________
Pembahasan
Sebenarnya Python sudah menyediakan fungsi . Tanpa parameter z, mengembalikan nilai x^y. Dengan parameter z, mengembalikan nilai x^y mod z. Pembuat soal jelas tahu tentang hal ini, oleh karena itu, ada persyaratan "tanpa menggunakan fungsi pow()".
Dari aritmetika modular, kita tahu bahwa , dengan . Berdasarkan hal itu, algoritma utama modulo ini dapat diimplementasikan baik secara iteratif maupun rekursif.
Pada program di atas, fungsi yang secara rekursif mengimlementasikan algoritma utama terdapat dalam fungsi . Fungsi tersebut menerima 3 parameter, yaitu , , dan . Hasil akhir dari fungsi tersebut adalah nilai basis^eksponen mod modulus.
Contoh kasus dan hasil eksekusi program
Untuk pengujian program, kita gunakan 3 contoh kasus. Kita hitung hasilnya secara matematis terlebih dahulu.
Contoh 1 (seperti pada soal)
Jadi, .
Contoh 2
Jadi, .
Contoh 3
Jadi, .
Berikutnya adalah hasil eksekusi program.
Bilangan basis = 9999
Eksponsn = 9999
Modulus = 10
========================
⇒ 9999^9999 mod 10 = 9
Mau coba lagi? (y/t) y
Bilangan basis = 2022
Eksponsn = 2021
Modulus = 2023
========================
⇒ 2022^2021 mod 2023 = 2022
Mau coba lagi? (y/t) y
Bilangan basis = 17
Eksponsn = 8
Modulus = 1945
========================
⇒ 17^8 mod 1945 = 1326
Mau coba lagi? (y/t) x
Ngawur kamu! Nggak jelas deh!
___________________
(atau bisa amati gambar)
Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.
Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact
Last Update: Thu, 27 Oct 22