From af18853bc353e97c7cc3913489219ff5d95a2be8 Mon Sep 17 00:00:00 2001 From: Eatswap Date: Thu, 20 Oct 2022 21:24:21 +0800 Subject: [PATCH] add: 221020-CN --- cpp/2210/221020-CN.cpp | 30 ++++++++++++++++++++++++++++++ cpp/2210/CMakeLists.txt | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 cpp/2210/221020-CN.cpp diff --git a/cpp/2210/221020-CN.cpp b/cpp/2210/221020-CN.cpp new file mode 100644 index 0000000..a0684fe --- /dev/null +++ b/cpp/2210/221020-CN.cpp @@ -0,0 +1,30 @@ +#include + +/** + * 779. K-th Symbol in Grammar + * We build a table of n rows (1-indexed). We start by writing 0 in the 1st row. Now in every subsequent row, we look at the previous row and replace each occurrence of 0 with 01, and each occurrence of 1 with 10. + * - For example, for n = 3, the 1st row is 0, the 2nd row is 01, and the 3rd row is 0110. + * Given two integer n and k, return the kth (1-indexed) symbol in the nth row of a table of n rows. + */ + +class Solution { +public: + static int kthGrammar(int n, int k) { + --k; + int cur = 0; + while (--n) + cur ^= !!(k & (1 << (n - 1))); + return cur; + } +}; + +int main() { + std::printf("%d\n", Solution::kthGrammar(1, 1)); + std::printf("%d\n", Solution::kthGrammar(2, 1)); + std::printf("%d\n", Solution::kthGrammar(2, 2)); + std::printf("%d\n", Solution::kthGrammar(3, 1)); + std::printf("%d\n", Solution::kthGrammar(3, 2)); + std::printf("%d\n", Solution::kthGrammar(3, 3)); + std::printf("%d\n", Solution::kthGrammar(3, 4)); + return 0; +} diff --git a/cpp/2210/CMakeLists.txt b/cpp/2210/CMakeLists.txt index 7608e02..c5d055b 100644 --- a/cpp/2210/CMakeLists.txt +++ b/cpp/2210/CMakeLists.txt @@ -3,4 +3,4 @@ PROJECT(2210) SET(CMAKE_CXX_STANDARD 23) -ADD_EXECUTABLE(2210 221019.cpp) +ADD_EXECUTABLE(2210 221020-CN.cpp)