โจทย์
ดูต้นฉบับ (ภาษาอังกฤษ)ช่องที่ 1 มีเมล็ดข้าว 1 เมล็ด ช่องถัดไปแต่ละช่องจะมีเมล็ดข้าวเป็นสองเท่าของช่องก่อนหน้า ให้คืนค่าจำนวนเมล็ดข้าวบนช่องที่ระบุ และผลรวมของเมล็ดข้าวบนช่องที่ 1 ถึง 64 ให้แสดงแต่ละจำนวนเป็นข้อความเลขฐานสิบ เพราะผลรวมของทั้งกระดานมีค่ามากเกินกว่าที่จะเก็บใน signed 64-bit integer ได้
ให้เขียนฟังก์ชัน chessboard_grains(square)
อินพุต
square: ช่องที่ต้องการ โดยเริ่มนับจาก 1
เอาต์พุต
คืนค่าข้อความเลขฐานสิบสองค่า: [จำนวนบนช่องที่ระบุ, ผลรวมบนทั้ง 64 ช่อง]
เงื่อนไข
1 ≤ square ≤ 64. ข้อความเอาต์พุตต้องประกอบด้วยตัวเลขฐานสิบเท่านั้น ห้ามมีจุลภาค เว้นวรรค หรือศูนย์นำหน้า
ตัวอย่าง
อินพุต:
square = 6
ผลลัพธ์ที่คาดหวัง:
expected = ["32", "18446744073709551615"]
อินพุต:
long long square = 6;
ผลลัพธ์ที่คาดหวัง:
std::vector<std::string> expected = {"32", "18446744073709551615"};
อินพุต:
long square = 6;
ผลลัพธ์ที่คาดหวัง:
string[] expected = new string[] {"32", "18446744073709551615"};
คำอธิบาย
จำนวนเมล็ดข้าวหกช่องแรกคือ 1, 2, 4, 8, 16, 32 ผลรวมของทั้งกระดานคือ 1 + 2 + … + 2⁶³ = 2⁶⁴ − 1
อินพุต:
square = 1
ผลลัพธ์ที่คาดหวัง:
expected = ["1", "18446744073709551615"]
อินพุต:
long long square = 1;
ผลลัพธ์ที่คาดหวัง:
std::vector<std::string> expected = {"1", "18446744073709551615"};
อินพุต:
long square = 1;
ผลลัพธ์ที่คาดหวัง:
string[] expected = new string[] {"1", "18446744073709551615"};
คำอธิบาย
ช่องแรกมีเมล็ดข้าว 1 เมล็ด ค่าผลลัพธ์ตัวที่สองจะหมายถึงผลรวมของทั้ง 64 ช่องเสมอ ไม่ใช่แค่ผลรวมของช่องที่ระบุหรือช่องก่อนหน้า
แหล่งอ้างอิง
โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน