我有一个斐波那契问题,我想计算第n个斐波那契,并想要它的最后一位数字(我将在%10时获得的数字)。n将被给出,并且可以高达10 ^ 18。
unsigned long long int nthfib(long long int n) {
double phi = (1 + sqrt(5)) / 2;
return round(pow(phi, n-1) / sqrt(5));
}
Run Code Online (Sandbox Code Playgroud)
上面的代码,对于大n,例如1024,给出了很大的数字,我无法将其存储在变量中并找到其%10。
由于时间是一个问题,我需要O(1)中的解决方案。