mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-04-24 10:33:10 +08:00
replace std::chronos with ctime - cpplint does not allow c++-11
This commit is contained in:
@@ -7,52 +7,69 @@
|
||||
* number that contains 10450 digits!
|
||||
**/
|
||||
|
||||
#include "large_number.h"
|
||||
#include <ctime>
|
||||
#include <iostream>
|
||||
#include <chrono>
|
||||
|
||||
large_number fib(unsigned long long n)
|
||||
{
|
||||
#include "large_number.h"
|
||||
|
||||
large_number fib(unsigned long long n) {
|
||||
large_number f0(1);
|
||||
large_number f1(1);
|
||||
|
||||
do
|
||||
{
|
||||
do {
|
||||
large_number f2 = f0 + f1;
|
||||
f0 = f1;
|
||||
f1 = f2;
|
||||
n--;
|
||||
} while (n > 2); // since we start from 2
|
||||
} while (n > 2); // since we start from 2
|
||||
return f1;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int main(int argc, char *argv[]) {
|
||||
unsigned long long N;
|
||||
if (argc == 2)
|
||||
N = strtoull(argv[1], NULL, 10);
|
||||
else
|
||||
{
|
||||
else {
|
||||
std::cout << "Enter N: ";
|
||||
std::cin >> N;
|
||||
}
|
||||
|
||||
auto start_time = std::chrono::high_resolution_clock::now();
|
||||
clock_t start_time = std::clock();
|
||||
large_number result = fib(N);
|
||||
auto end_time = std::chrono::high_resolution_clock::now();
|
||||
std::chrono::duration<double> time_taken = end_time - start_time;
|
||||
clock_t end_time = std::clock();
|
||||
double time_taken = static_cast<double>(end_time - start_time) /
|
||||
static_cast<double>(CLOCKS_PER_SEC);
|
||||
|
||||
std::cout
|
||||
<< std::endl
|
||||
<< N << "^th Fibonacci number: " << result << std::endl
|
||||
<< "Number of digits: " << result.num_digits() << std::endl
|
||||
<< "Time taken: " << time_taken.count() << " s" << std::endl;
|
||||
std::cout << std::endl
|
||||
<< N << "^th Fibonacci number: " << result << std::endl
|
||||
<< "Number of digits: " << result.num_digits() << std::endl
|
||||
<< "Time taken: " << std::scientific << time_taken << " s"
|
||||
<< std::endl;
|
||||
|
||||
N = 5000;
|
||||
if (fib(N) == large_number("3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125"))
|
||||
std::cout << "Test for " << N << "^th Fibonacci number passed!" << std::endl;
|
||||
if (fib(N) ==
|
||||
large_number(
|
||||
"387896845438832563370191630832590531208212771464624510616059721489"
|
||||
"555013904403709701082291646221066947929345285888297381348310200895"
|
||||
"498294036143015691147893836421656394410691021450563413370655865623"
|
||||
"825465670071252592990385493381392883637834751890876297071203333705"
|
||||
"292310769300851809384980180384781399674888176555465378829164426891"
|
||||
"298038461377896902150229308247566634622492307188332480328037503913"
|
||||
"035290330450584270114763524227021093463769910400671417488329842289"
|
||||
"149127310405432875329804427367682297724498774987455569190770388063"
|
||||
"704683279481135897373999311010621930814901857081539785437919530561"
|
||||
"751076105307568878376603366735544525884488624161921055345749367589"
|
||||
"784902798823435102359984466393485325641195222185956306047536464547"
|
||||
"076033090242080638258492915645287629157575914234380914230291749108"
|
||||
"898415520985443248659407979357131684169286803954530954538869811466"
|
||||
"508206686289742063932343848846524098874239587380197699382031717420"
|
||||
"893226546887936400263079778005875912967138963421425257911687275560"
|
||||
"0360311370547754724604639987588046985178408674382863125"))
|
||||
std::cout << "Test for " << N << "^th Fibonacci number passed!"
|
||||
<< std::endl;
|
||||
else
|
||||
std::cerr << "Test for " << N << "^th Fibonacci number failed!" << std::endl;
|
||||
std::cerr << "Test for " << N << "^th Fibonacci number failed!"
|
||||
<< std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user