From be030b74805f245c8618c77b03e76f16b3fc945a Mon Sep 17 00:00:00 2001 From: Jack Sangdahl Date: Tue, 17 Dec 2024 13:18:18 -0700 Subject: 1608. weird algorithm --- introductory_problems/readme.md | 8 ++++++++ introductory_problems/weird_algorithm.cpp | 13 +++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 introductory_problems/readme.md create mode 100644 introductory_problems/weird_algorithm.cpp (limited to 'introductory_problems') diff --git a/introductory_problems/readme.md b/introductory_problems/readme.md new file mode 100644 index 0000000..1ff88eb --- /dev/null +++ b/introductory_problems/readme.md @@ -0,0 +1,8 @@ +## Introductory Problems + +### Weird Algorithm +Consider an algorithm that takes as input a positive integer `n`. If `n` is even, the algorithm divides it by two, and if `n` is odd, the algorithm multiplies it by three and adds one. The algorithm repeats this, until `n` is one. Your task is to simulate the execution of the algorithm for a given value of `n`. + +**Input**: The only input line contains an integer `n`. (Example: 3) + +**Output**: Print a line that contains all values of `n` during the algorithm. (Example: 3 10 5 16 8 4 2 1) diff --git a/introductory_problems/weird_algorithm.cpp b/introductory_problems/weird_algorithm.cpp new file mode 100644 index 0000000..d8f42c3 --- /dev/null +++ b/introductory_problems/weird_algorithm.cpp @@ -0,0 +1,13 @@ +// 1608. Weird Algorithm +#include +using namespace std; + +int main() { + long long num; + scanf("%lld", &num); + while (num > 1) { + printf("%lld ", num); + num = num & 1 ? 3 * num + 1 : num / 2; + } + printf("1\n"); +} -- cgit v1.2.3