โจทย์
จำนวนเต็มที่หารด้วย 2 ลงตัวคือจำนวนคู่; จำนวนเต็มอื่น ๆ คือจำนวนคี่ ตัวเลขที่มีทศนิยมไม่ใช่ทั้งคู่หรือคี่ ศูนย์ถือเป็นจำนวนคู่ และจำนวนเต็มลบใช้กฎเดียวกัน
ให้เขียนฟังก์ชัน number_parity(number)
อินพุต
number: ตัวเลขที่ต้องการจัดประเภท
เอาต์พุต
ให้คืนค่า odd, even หรือ neither เป็นข้อความตัวพิมพ์เล็ก
เงื่อนไข
−1,000,000 ≤ number ≤ 1,000,000 อินพุตเป็นจำนวนจำกัดและมีทศนิยมไม่เกินสองตำแหน่ง
ตัวอย่าง
อินพุต:
number = 14
ผลลัพธ์ที่คาดหวัง:
expected = "even"
อินพุต:
double number = 14;
ผลลัพธ์ที่คาดหวัง:
std::string expected = "even";
อินพุต:
double number = 14;
ผลลัพธ์ที่คาดหวัง:
string expected = "even";
คำอธิบาย
14 = 2 × 7 ดังนั้นหารด้วย 2 ลงตัว
อินพุต:
number = 3.5
ผลลัพธ์ที่คาดหวัง:
expected = "neither"
อินพุต:
double number = 3.5;
ผลลัพธ์ที่คาดหวัง:
std::string expected = "neither";
อินพุต:
double number = 3.5;
ผลลัพธ์ที่คาดหวัง:
string expected = "neither";
คำอธิบาย
3.5 มีส่วนทศนิยม จึงไม่ใช่จำนวนเต็มคี่หรือคู่
แนวทางการแก้
ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ
คำใบ้ 1
ต้องดูให้ก่อนว่า input เป็นจำนวนเต็มหรือไม่ เพราะค่าทศนิยมไม่ใช่ทั้งคี่หรือคู่
คำใบ้ 2
สำหรับจำนวนเต็ม parity ดูจากหาร 2 แล้วเหลือเศษหรือไม่
คำใบ้ 3
จำไว้ว่า 0 เป็นเลขคู่ และจำนวนเต็มติดลบใช้กฎเดียวกับจำนวนบวก
ความซับซ้อนที่คาดหวัง
เวลา O(1), หน่วยความจำเพิ่ม O(1)
แหล่งอ้างอิง
โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน