aboutsummaryrefslogtreecommitdiff
path: root/challenge-149/ulrich-rieke/cpp/ch-1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-149/ulrich-rieke/cpp/ch-1.cpp')
-rw-r--r--challenge-149/ulrich-rieke/cpp/ch-1.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/challenge-149/ulrich-rieke/cpp/ch-1.cpp b/challenge-149/ulrich-rieke/cpp/ch-1.cpp
new file mode 100644
index 0000000000..9a370281ac
--- /dev/null
+++ b/challenge-149/ulrich-rieke/cpp/ch-1.cpp
@@ -0,0 +1,46 @@
+nclude <iostream>
+#include <vector>
+#include <cstdlib>
+#include <algorithm>
+
+int findDigitSum( int n ) {
+ int sum = 0 ;
+ while ( n != 0 ) {
+ sum += (n % 10) ;
+ n /= 10 ;
+ }
+ return sum ;
+}
+
+std::vector<int> findFibonaccis( ) {
+ std::vector<int> fibos { 0 , 1 } ;
+ while ( fibos.size( ) < 8 ) {
+ fibos.push_back( fibos.back( ) + fibos[ fibos.size( ) - 2 ] ) ;
+ }
+ return fibos ;
+}
+
+int main( int argc, char * argv[] ) {
+ std::vector<int> fiboDigitSums ;
+ int n = std::atoi( argv[1] ) ;
+ int current = -1 ;
+ std::vector<int> fibonaccis = findFibonaccis( ) ;
+ while ( fiboDigitSums.size( ) < n ) {
+ current++ ;
+ int digitSum = findDigitSum( current ) ;
+ if ( std::find( fibonaccis.begin( ) , fibonaccis.end( ) , digitSum )
+ != fibonaccis.end( ) )
+ fiboDigitSums.push_back( current ) ;
+ if ( digitSum > fibonaccis.back( ) ) {
+ do {
+ fibonaccis.push_back( fibonaccis.back( ) +
+ fibonaccis[ fibonaccis.size( ) - 2] ) ;
+ } while ( fibonaccis.back( ) < digitSum ) ;
+ }
+ }
+ for ( int num : fiboDigitSums ) {
+ std::cout << num << " " ;
+ }
+ std::cout << std::endl ;
+ return 0 ;
+}