Untuk memeriksa apakah angka desimal dapat habis dibagi 7:
Hapus digit terakhir. Lipat gandakan dengan 2 dan kurangi dari yang tersisa. Jika hasilnya habis dibagi 7, angka aslinya bisa habis dibagi 7.
(juga dijelaskan misalnya di sini )
Aturan ini baik untuk pemeriksaan keterbagian manual. Sebagai contoh:
Apakah 2016 dapat dibagi 7?
Kurangi
6*2
dari 201; kita dapatkan 189. Apakah ini dapat dibagi oleh 7? Untuk memeriksanya, mari kita terapkan aturan itu lagi.Kurangi
9*2
dari 18; kami mendapatkan 0. Oleh karena itu, 2016 dapat dibagi dengan 7.
Dalam tantangan ini, Anda harus menerapkan aturan ini hingga status pembagiannya jelas , yaitu jumlahnya tidak lebih dari 70 (namun, lihat di bawah untuk detailnya). Buat fungsi atau program lengkap.
Input : bilangan bulat positif; kode Anda harus mendukung input hingga 32767 (mendukung bilangan bulat presisi-sewenang-wenang adalah bonus; lihat di bawah).
Keluaran : bilangan bulat (mungkin negatif), tidak lebih besar dari 70, yang merupakan hasil penerapan aturan pembagian-per-7 nol atau lebih banyak kali.
Kasus uji:
Input Output Alternative output
1 1
10 10 1
100 10 1
13 13 -5
42 42 0
2016 0
9 9
99 -9
9999 -3
12345 3
32767 28 -14
---------- Values below are only relevant for the bonus
700168844221 70 7
36893488147419103232 32 -1
231584178474632390847141970017375815706539969331281128078915168015826259279872 8
Di mana dua output yang mungkin ditentukan, salah satu hasilnya benar: yang kedua sesuai untuk menerapkan aturan sekali lagi. Dilarang menerapkan aturan pada angka satu digit: jika Anda menghapus digit, tidak ada (bukan 0) yang tersisa.
Bonus : Jika algoritma Anda
- Mendukung bilangan bulat presisi sembarang
- Hanya melakukan satu operan pada input
- Memiliki kompleksitas ruang
o(n)
(yaitu kurang dariO(n)
); dan - Memiliki kompleksitas waktu
O(n)
,
di mana n
jumlah angka desimal:
Kurangi 50% dari jumlah byte kode Anda.
Bonus nyata :
Selain itu, jika algoritma Anda membaca input ke arah normal, mulai dari digit paling signifikan, kurangi 50% sekali lagi - skor Anda adalah 25% dari jumlah byte Anda (sepertinya mungkin, tapi saya tidak terlalu yakin).
1000000000000000000001
.
long long
s atau beberapa jenis yang setara bawaan?