Mengenal Soal OSN · Pelajaran 3 dari 10
Soal aritmetika dan pola
9 menit baca · BelajarCode
Soal aritmetika OSN sering memakai angka yang sangat besar, sehingga tidak mungkin dihitung langsung. Kuncinya adalah mencari pola.
Digit terakhir bilangan berpangkat
Berapa digit terakhir dari 7 pangkat 2026? Lihat digit terakhir dari pangkat-pangkat kecil:
| Pangkat | Nilai | Digit terakhir |
|---|---|---|
| 7 pangkat 1 | 7 | 7 |
| 7 pangkat 2 | 49 | 9 |
| 7 pangkat 3 | 343 | 3 |
| 7 pangkat 4 | 2401 | 1 |
| 7 pangkat 5 | 16807 | 7 |
Digit terakhir berulang setiap 4 pangkat: 7, 9, 3, 1. Karena 2026 dibagi 4 bersisa 2, digit terakhirnya sama dengan pangkat 2, yaitu 9.
1print(pow(7, 2026, 10))2print([pow(7, k, 10) for k in range(1, 9)])9 [7, 9, 3, 1, 7, 9, 3, 1]
pow(a, b, m) menghitung sisa bagi a pangkat b dengan m secara efisien, tanpa menghitung bilangan raksasanya.
Hari dan siklus
Hari ini Senin. Hari apa 100 hari lagi? Hari berulang setiap 7 hari, dan 100 dibagi 7 bersisa 2. Jadi sama dengan 2 hari setelah Senin, yaitu Rabu.
1hari = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"]2print(hari[(0 + 100) % 7])Rabu
Menghitung kelipatan
Berapa banyak bilangan dari 1 sampai 1000 yang habis dibagi 3 atau 5?
- Kelipatan 3: 1000 div 3 = 333.
- Kelipatan 5: 1000 div 5 = 200.
- Kelipatan 15 (habis dibagi keduanya) terhitung dua kali: 1000 div 15 = 66.
Jawabannya 333 + 200 - 66 = 467. Cara menjumlah lalu mengurangi yang terhitung ganda ini disebut prinsip inklusi eksklusi.
1rumus = 1000 // 3 + 1000 // 5 - 1000 // 152langsung = sum(1 for i in range(1, 1001) if i % 3 == 0 or i % 5 == 0)3print(rumus, langsung)467 467
Jumlah deret
Jumlah 1 + 2 + ... + n sama dengan n × (n + 1) / 2. Jumlah 1 sampai 100 adalah 100 × 101 / 2 = 5050. Rumus ini muncul di banyak soal, termasuk saat menghitung banyaknya perulangan bersarang.
Cek pemahaman
Berapa digit terakhir dari 2 pangkat 100?
Latihan
Dua soal siklus
- Hari ini Sabtu. Hari apa 1000 hari lagi?
- Berapa dua digit terakhir dari 3 pangkat 100?
Kerjakan dengan tangan, lalu periksa dengan Python.
Pembahasan
- 1000 dibagi 7 bersisa 6. Enam hari setelah Sabtu adalah Jumat.
- Dua digit terakhir artinya sisa bagi 100. 3 pangkat 10 = 59049, dua digit terakhirnya 49. Lalu 3 pangkat 20 berakhiran 49 × 49 = 2401, yaitu 01. Karena 3 pangkat 20 berakhiran 01, maka 3 pangkat 100 = (3 pangkat 20) pangkat 5 juga berakhiran 01.
1hari = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"]2print(hari[(5 + 1000) % 7])3print(f"{pow(3, 100, 100):02d}")Jumat 01
Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.