Nhiệm vụ của bạn là tính căn bậc hai của một số nguyên dương mà không sử dụng bất kỳ toán tử toán học nào để thay đổi số, chẳng hạn như:
- Đặt một biến (ví dụ: SquareRoot = 5)
- Ngoài ra (A + B)
- Phép trừ (AB)
- Phép nhân (A * B)
- Bộ phận (A / B)
- Rễ vuông, khối lập phương, thứ tư, vv
- Số mũ
Các toán tử so sánh (chẳng hạn như <,>, ==, v.v.) không được coi là "toán tử toán học" cho mục đích của câu hỏi này và được cho phép miễn là chúng không thay đổi giá trị của biến.
Toán tử duy nhất mà bạn có thể sử dụng là ++. Các ngoại lệ sau đây được đặt ra:
- Nếu bạn muốn, bạn có thể khởi tạo một biến bằng cách đặt nó thành 0.
- Nếu ngôn ngữ của bạn không bao gồm cú pháp ++, bạn có thể sử dụng cú pháp tương đương, chẳng hạn như foo + = 1 hoặc foo = foo + 1
- Căn bậc hai phải được tính ít nhất là 6 chữ số ngoài số thập phân (vị trí hàng trăm nghìn) và xuất ra dưới dạng toàn bộ số thập phân (ví dụ: nếu tôi nhập 2, nó có thể xuất hiện là 14142135624 hoặc 1414213 tùy thuộc vào làm tròn) . Làm tròn lên hoặc xuống không quan trọng.
Chức năng do người dùng xác định không được phép. Ngoài ra, chức năng mô phỏng với goto cũng không được phép.
Tôi quan tâm để xem những gì mọi người gửi! Chúc mừng mã hóa!
LÀM RÕ
Làm rõ số đó là một số nguyên dương. Bạn có thể tạo mã có thể làm bất kỳ số nào nhưng không cần thiết.
YÊU CẦU # 2
Làm rõ rằng các toán tử so sánh được cho phép.
LỚP # 3
Cộng, trừ, nhân, chia, và chức năng để thay đổi số không được phép ở tất cả , bất kể họ được lưu vào một biến hay không. Tôi xin lỗi vì điều này làm mất hiệu lực một vài câu trả lời hiện có, nhưng tôi muốn định nghĩa nhóm toán tử này bằng "thay đổi số" để ngăn câu trả lời troll (ví dụ: tôi chỉ sử dụng hàm sqrt (), bạn chỉ cấm bổ sung, nhân, chia và trừ). Xin lỗi vì sự nhầm lẫn.
LỚP # 4
Làm rõ rằng chúng ta cần ít nhất 5 chữ số. 10 chữ số gây ra mã để chạy trong một thời gian dài.
while r*r<n*10e20:r+=1
- khá tầm thường. Ngoài ra, bạn có thể xem xét giảm sản lượng yêu cầu xuống còn 10 ^ 8 hoặc hơn. Thứ nhất, vì 10 ^ 10 lớn hơn 2 ^ 31 và thứ hai, vì sẽ mất một thời gian để tăng mức cao đó.