描述
给定一个数列,这个数列满足:
F1=A,F2=B,Fi=Fi−1+Fi−2(i>2)
希望你能求出gcd(FN,FN+1)。
现在给定A、B、N,请你求出要求的那个数字。答案可能很大,但是不取模。
输入
输入一行三个正整数A,B,N。
1≤A≤B≤1017,1≤N≤10105,也就是说N的长度不超过105
多组数据输入
输出
输出一行一个正整数表示答案。
输入样例 1
2 4 5
输出样例 1
2
这题表面上是求数列的最后面的两个数的最大公因数,实际上他们经历了变换之后最大公因数还是和前两个一样,所以我们只需要求前两个数的最大公因数即可,由于数据过大需要使用long long来空间。
#include <iostream>
#include <string>
using namespace std;
int main()
{
long long m,n;
string s;
while(cin>>m>>n>>s)
{
long long temp;
while(1)
{
if(m%n==0)
{
cout<<n<<endl;
break;
}
else if(m%n==1)
{
cout<<"1"<<endl;
break;
}
temp=n;
n=m%n;
m=temp;
}
}
return 0;
}