SHOW:
|
|
- or go back to the newest paste.
1 | #include <ctime> | |
2 | #include <iostream> | |
3 | #include "mpirxx.h" | |
4 | ||
5 | template<int N> mpz_class fib(mpz_class& tmp) | |
6 | { | |
7 | mpz_class t; tmp = fib<N - 1>(t); | |
8 | return tmp + t; | |
9 | } | |
10 | ||
11 | template<> mpz_class fib<1>(mpz_class& tmp) { tmp = 0; return 1; } | |
12 | template<> mpz_class fib<2>(mpz_class& tmp) { tmp = 1; return 1; } | |
13 | template<int N> mpz_class fib() { return fib<N>(mpz_class()); } | |
14 | ||
15 | int main() | |
16 | { | |
17 | clock_t t_start = clock(); | |
18 | std::cout << fib<1000>() << std::endl; | |
19 | printf("Time: %.3fs\n", (float)(clock() - t_start) / 1000); | |
20 | return 0; | |
21 | } | |
22 | ||
23 | /* | |
24 | Output: | |
25 | - | 434665576869374564356885276750406258025646605173717804024817290895365554179490518904038798400792551692959225930803 |
25 | + | 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080 |
26 | - | 22634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875 |
26 | + | 322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875 |
27 | Time: 0.001s | |
28 | */ |