Fibonacci Sum of Large Numbers(Only Last Digit to be Printed)

后端 未结 5 1940
死守一世寂寞
死守一世寂寞 2020-12-31 12:44

I have been trying to come out with a solution regarding the problem of finding the last digit of the sum of large n Fibonacci series. I have been able to pass several test

5条回答
  •  长发绾君心
    2020-12-31 13:33

    Last digit of Fibonacci sum repeats after 60 elements.

    Here the period is 60 [0-59]. So to get the last digit of n'th sum of number is the last digit of n%60'th sum of number

    #include 
    #include 
    #include 
    int get_last_digit(int n){
      std::vector last_digits(60);
      long long a = 0, b = 1;
      last_digits[0] = 0;
      last_digits[1] = 1;
      long long temp, sum = 1;
      // Fill last_digits vector with the first 60 sums last digits
      for (int i = 2; i < 60; i++) {
        temp = a+b;
        a = b;
        b = temp;
        sum += temp;
        last_digits[i] = sum%10;
      }
      // Now return n%60'th element
      return last_digits[n%60];
    }
    int main(int argc, char const *argv[]) {
      int n;
      std::cin>>n;
      std::cout << get_last_digit(n);
      return 0;
    }
    

提交回复
热议问题