aboutsummaryrefslogtreecommitdiff
path: root/challenge-102/paulo-custodio/cpp/ch-2.cpp
diff options
context:
space:
mode:
author冯昶 <seaker@qq.com>2021-03-15 18:13:51 +0800
committer冯昶 <seaker@qq.com>2021-03-15 18:13:51 +0800
commit8b6be37fe4dac8b4c6489a95e55514b76b298d15 (patch)
treeae36c8ec2c71f606c0e36adaa19dba366a68a0b4 /challenge-102/paulo-custodio/cpp/ch-2.cpp
parent865acfd056fb6f409ec6b1a81d60b931cbcb69fe (diff)
parentc9aec2da6bcb04b488183f09ca94bee488557aff (diff)
downloadperlweeklychallenge-club-8b6be37fe4dac8b4c6489a95e55514b76b298d15.tar.gz
perlweeklychallenge-club-8b6be37fe4dac8b4c6489a95e55514b76b298d15.tar.bz2
perlweeklychallenge-club-8b6be37fe4dac8b4c6489a95e55514b76b298d15.zip
Merge branch 'master' of github.com:seaker/perlweeklychallenge-club
Diffstat (limited to 'challenge-102/paulo-custodio/cpp/ch-2.cpp')
-rw-r--r--challenge-102/paulo-custodio/cpp/ch-2.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/challenge-102/paulo-custodio/cpp/ch-2.cpp b/challenge-102/paulo-custodio/cpp/ch-2.cpp
new file mode 100644
index 0000000000..24fbf2fb06
--- /dev/null
+++ b/challenge-102/paulo-custodio/cpp/ch-2.cpp
@@ -0,0 +1,54 @@
+/*
+Challenge 102
+
+TASK #2 › Hash-counting String
+Submitted by: Stuart Little
+
+You are given a positive integer $N.
+
+Write a script to produce Hash-counting string of that length.
+
+The definition of a hash-counting string is as follows:
+- the string consists only of digits 0-9 and hashes, ‘#’
+- there are no two consecutive hashes: ‘##’ does not appear in your string
+- the last character is a hash
+- the number immediately preceding each hash (if it exists) is the position
+of that hash in the string, with the position being counted up from 1
+
+It can be shown that for every positive integer N there is exactly one such
+length-N string.
+Examples:
+
+(a) "#" is the counting string of length 1
+(b) "2#" is the counting string of length 2
+(c) "#3#" is the string of length 3
+(d) "#3#5#7#10#" is the string of length 10
+(e) "2#4#6#8#11#14#" is the string of length 14
+*/
+
+#include <iostream>
+#include <string>
+
+std::string hash_count(int n) {
+ std::string str(n, ' ');
+ int i = n - 1;
+ while (i >= 0) {
+ int pos = i + 1;
+ str[i--] = '#';
+ while (i >= 0 && pos != 0) {
+ str[i--] = '0' + (pos % 10);
+ pos /= 10;
+ }
+ }
+ return str;
+}
+
+
+int main(int argc, char* argv[]) {
+ if (argc != 2) {
+ std::cerr << "Usage: ch-1 N" << std::endl;
+ return EXIT_FAILURE;
+ }
+ else
+ std::cout << hash_count(atoi(argv[1])) << std::endl;
+}