Hello everyone. I was trying to solve the problem stated in the title, but my algorithm was a naive one and it didn’t display the correct outputs. I found out a solution on stack overflow, but I wasn’t able to understand the code .I know that the Pissano period property of Fibonacci numbers is being used here but still it confuses me. Can anyone please help me to understand the code:
#include <iostream>
using namespace std;
long long calc_fib(long long n) {
n = (n+2)%60;
int fib[n+1];
fib[0]=0;
fib[1]=1;
int res = 1;
for(int i = 2; i<=n;i++){
fib[i] = (fib[i-1]%10 + fib[i-2]%10)%10;
// res = res + fib[i];
}
// cout<<fib[n]<<"\n";
if(fib[n] == 0){
return 9;
}
return (fib[n]%10-1);
}
int main() {
long long n = 0;
std::cin >> n;
std::cout << calc_fib(n) << '\n';
return 0;
}
Thanks in advance 