C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でn番目のフィボナッチ数の最後の桁を見つけるプログラム


この問題では、番号Nが与えられます。私たちのタスクは、C++でN番目のフィボナッチ数の最後の桁を見つけるプログラムを作成することです。

問題の説明

N番目のフィボナッチ数の最後の桁(つまりLSB)を見つける必要があります。

問題を理解するために例を見てみましょう

入力:N =120出力:1

ソリューションアプローチ

簡単な解決策は、直接フィボナッチ式を使用してN番目の項を見つけることです。ただし、Nが大きい場合、この方法は実行できません。したがって、このことを克服するために、最後の桁が60項後に繰り返されるフィボナッチ数列のプロパティを使用します。つまり第75項の最後の桁は、第135項の最後の桁と同じです。

これは、60まで作業すると、考えられるすべての組み合わせが得られ、使用する用語を見つけるために、60の数字のmodが見つかることを意味します。

#include
using namespace std;
long int fibo(int N){
   long int a=0,b=1,c;
   for(int i=2; i< N;i++) {
      c=a+b;
      a=b;
      b=c;
   }
   return c;
}
int findLastDigitNterm(int N) {
   N = N % 60;
   return ( fibo(N)%10);
}
int main() {
   int N = 683;
   cout<<"The last digit of "<<N<<"th Fibonacci term is "<<findLastDigitNterm(N);
   return 0;
}

出力

The last digit of 683th Fibonacci term is 1

  1. グラフ内のアーティキュレーションポイントの数を見つけるためのC++プログラム

    グラフ内のアーティキュレーションポイント(またはカット頂点)は、グラフを削除する(およびグラフを通るエッジ)場合にグラフを切断するポイントです。切断された無向グラフのアーティキュレーションポイントは、接続されたコンポーネントの数を増やす頂点の削除です。 アルゴリズム Begin    We use dfs here to find articulation point:    In DFS, a vertex w is articulation point if one of the following two conditions is satisfi

  2. エッジのばらばらのパスの最大数を見つけるためのC++プログラム

    これは、エッジの互いに素なパスの最大数を見つけるためのC ++プログラムです。これは、2つの頂点間の最短のサブセットパスまたは最大フローを意味します。 アルゴリズム: Begin    function bfs() returns true if there is path from source s to sink t in    the residual graph which indicates additional possible flow in the    graph. End Begin    fu