문제
Square 1 holds one grain. Each later square holds twice as many grains as the previous square. Return both the count on the requested square and the total on squares 1 through 64. Write each count as decimal text, because the board total is too large for a signed 64-bit integer.
Implement chessboard_grains(square).
Input
square: The requested square, numbered from 1.
Output
Return two decimal strings: [count on the requested square, total on all 64 squares].
제약 조건
1 ≤ square ≤ 64. Output strings contain decimal digits only, with no commas, spaces, or leading zeros.
예시
입력:
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"};
설명
The first six counts are 1, 2, 4, 8, 16, 32. The board total is 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"};
설명
The first square holds 1 grain. The second output always refers to all 64 squares, not just the requested prefix.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
Each square doubles the previous square, so the requested count depends only on its position.
힌트 2
The total across all 64 squares is a geometric progression, and it grows far beyond normal integer limits.
힌트 3
Return both values as plain decimal text, and watch that the first square is one, not zero.
예상 복잡도
O(1) time, O(1) extra space
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.