Tugas Anda adalah menghitung akar kuadrat dari bilangan bulat positif tanpa menggunakan operator matematika untuk mengubah angka, seperti:
- Mengatur variabel (mis. SquareRoot = 5)
- Penambahan (A + B)
- Pengurangan (AB)
- Perkalian (A * B)
- Divisi (A / B)
- Akar kuadrat, kubus, keempat, dll
- Eksponen
Operator perbandingan (seperti <,>, ==, dll) tidak dianggap sebagai "operator matematika" untuk keperluan pertanyaan ini dan diizinkan selama mereka tidak mengubah nilai suatu variabel.
Satu-satunya operator yang dapat Anda gunakan adalah ++. Pengecualian berikut berlaku:
- Jika mau, Anda dapat menginisialisasi variabel dengan mengaturnya ke 0.
- Jika bahasa Anda tidak termasuk sintaks ++, Anda dapat menggunakan sintaks yang setara, seperti foo + = 1 atau foo = foo + 1
- Akar kuadrat harus dihitung setidaknya 6 digit di luar desimal (tempat seratus-ribu) dan dikeluarkan sebagai jumlah total desimal (mis. Jika saya input 2 itu bisa keluar sebagai 14142135624 atau 1414213 tergantung pada pembulatan) . Membulatkan ke atas atau ke bawah tidak penting.
Fungsi yang ditentukan pengguna tidak diizinkan. Selain itu, fungsi simulasi dengan goto juga tidak diperbolehkan.
Saya tertarik melihat apa yang diajukan semua orang! Selamat coding!
KLARIFIKASI
Jelaskan bahwa angka adalah bilangan bulat positif. Anda boleh membuat kode yang dapat melakukan nomor apa pun tetapi tidak perlu.
KLARIFIKASI # 2
Jelaskan bahwa operator perbandingan diizinkan.
KLARIFIKASI # 3
Penambahan, pengurangan, penggandaan, pembagian, dan fungsi untuk mengubah angka tidak diperbolehkan sama sekali , terlepas dari apakah mereka disimpan ke variabel atau tidak. Saya minta maaf karena ini membatalkan pasangan jawaban yang ada, tetapi saya bermaksud mendefinisikan grup operator ini dengan "ubah nomor" untuk mencegah jawaban troll (mis. Saya hanya menggunakan fungsi sqrt (), Anda hanya melarang penambahan, perkalian, pembagian, dan pengurangan). Maaf bila membingungkan.
KLARIFIKASI # 4
Jelaskan bahwa kita membutuhkan setidaknya 5 digit. 10 digit menyebabkan kode berjalan untuk waktu yang lama.
while r*r<n*10e20:r+=1- cukup sepele. Juga, Anda dapat mempertimbangkan mengurangi output yang diperlukan menjadi 10 ^ 8 atau lebih. Pertama, karena 10 ^ 10 lebih besar dari 2 ^ 31, dan kedua, karena akan butuh beberapa saat untuk meningkatkan setinggi itu.