งานของคุณคือการคำนวณสแควร์รูทของจำนวนเต็มบวกโดยไม่ต้องใช้ตัวดำเนินการทางคณิตศาสตร์ใด ๆ เพื่อเปลี่ยนจำนวนเช่น:
- การตั้งค่าตัวแปร (เช่น squareRoot = 5)
- การเพิ่ม (A + B)
- การลบ (AB)
- การคูณ (A * B)
- ส่วน (A / B)
- สแควร์, ลูกบาศก์, ที่สี่, ฯลฯ ราก
- เลขยกกำลัง
ตัวดำเนินการเปรียบเทียบ (เช่น <,>, ==, ฯลฯ ) ไม่ถือเป็น "ตัวดำเนินการทางคณิตศาสตร์" สำหรับวัตถุประสงค์ของคำถามนี้และได้รับอนุญาตตราบเท่าที่พวกเขาไม่ได้เปลี่ยนค่าของตัวแปร
โอเปอเรเตอร์เดียวที่คุณสามารถใช้ได้คือ ++ มีข้อยกเว้นดังต่อไปนี้:
- หากคุณต้องการคุณสามารถเริ่มต้นตัวแปรโดยการตั้งค่าเป็น 0
- หากภาษาของคุณไม่มีไวยากรณ์ ++ คุณอาจใช้ไวยากรณ์ที่เทียบเท่าเช่น foo + = 1 หรือ foo = foo + 1
- สแควร์รูทควรคำนวณอย่างน้อย 6 หลักเกินกว่าทศนิยม (ตำแหน่งหลักแสน) และเอาท์พุทเป็นจำนวนเต็มของทศนิยม (เช่นถ้าฉันใส่ 2 มันอาจออกมาเป็น 14142135624 หรือ 1414213 ขึ้นอยู่กับการปัดเศษ) . การปัดเศษขึ้นหรือลงไม่สำคัญ
ฟังก์ชั่นที่ผู้ใช้กำหนดไม่ได้รับอนุญาต นอกจากนี้ยังไม่อนุญาตให้จำลองการทำงานด้วย goto เช่นกัน
ฉันสนใจที่จะเห็นสิ่งที่ทุกคนส่ง! การเข้ารหัสที่มีความสุข!
ชี้แจง
ชี้แจงว่าหมายเลขนั้นเป็นจำนวนเต็มบวก คุณยินดีที่จะทำรหัสที่จะทำหมายเลขใด ๆ แต่มันไม่จำเป็น
CLARIFICATION # 2
ชี้แจงว่าผู้ประกอบการเปรียบเทียบได้รับอนุญาต
CLARIFICATION # 3
บวกลบคูณหารและฟังก์ชั่นการเปลี่ยนแปลงไปยังหมายเลขที่ไม่ได้รับอนุญาตที่ทุกคนไม่ว่าพวกเขาจะถูกบันทึกไว้ในตัวแปรหรือไม่ ฉันขอโทษที่สิ่งนี้ทำให้คำตอบที่มีอยู่ไม่ถูกต้องสองสามข้อ แต่ฉันหมายถึงการกำหนดกลุ่มผู้ประกอบการนี้ด้วย "เปลี่ยนหมายเลข" เพื่อป้องกันการหมุนรอบคำตอบ (เช่นฉันเพิ่งใช้ฟังก์ชัน sqrt () คุณห้ามเพิ่มเติมเท่านั้น การคูณการหารและการลบ) ขอโทษสำหรับความสับสน.
CLARIFICATION # 4
ชี้แจงว่าเราต้องการอย่างน้อย 5 หลัก รหัส 10 หลักทำให้โค้ดทำงานเป็นเวลานาน
while r*r<n*10e20:r+=1
- เป็นเรื่องเล็กน้อย นอกจากนี้คุณอาจพิจารณาลดเอาต์พุตที่ต้องการเป็น 10 ^ 8 หรือมากกว่านั้น ก่อนอื่นเพราะ 10 ^ 10 ใหญ่กว่า 2 ^ 31 และวินาทีเพราะจะใช้เวลาสักครู่เพื่อเพิ่มความสูง