summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Sangdahl <[email protected]>2024-12-17 13:18:18 -0700
committerJack Sangdahl <[email protected]>2024-12-17 13:18:18 -0700
commitbe030b74805f245c8618c77b03e76f16b3fc945a (patch)
tree9054d2c2b8ded0a404613a25c5b158cfbe02dc50
downloadcses-be030b74805f245c8618c77b03e76f16b3fc945a.tar.gz
cses-be030b74805f245c8618c77b03e76f16b3fc945a.zip
1608. weird algorithm
-rw-r--r--.gitignore1
-rw-r--r--introductory_problems/readme.md8
-rw-r--r--introductory_problems/weird_algorithm.cpp13
3 files changed, 22 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f47cb20
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*.out
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 <bits/stdc++.h>
+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");
+}