#include<iostream>
using namespace std;
//求斐波那契数
int fb(int n)
{
if (n == 0)
return 0;
if (n == 1)
return 1;
else
{
return fb(n - 2) + fb(n - 1);
}
}
int main()
{
int n, a, b;
cin >> n;
//将小于1000000的斐波那契数存入数组(PS:经过计算得知,小于1000000的斐波那契数只有31个)
int arr[32] = { 0 };
int i;
for (i = 0; i <= 31; i++)
{
arr[i] = fb(i);
}
//逐个对比查找大于n的第一个斐波那契数,count用于计算。
for (i = 0; i <= 31; i++)
{
if (arr[i] > n)
break;
}
//计算n前后两个斐波那契数的距离。
a = n - arr[i - 1];
b = arr[i] - n;
//比较大小,输出距离,并输出斐波那契数
if (a > b)
{
cout << b << endl;
cout << arr[i];
}
else
{
cout << a << endl;
cout << arr[i - 1];
}
system("pause");
return 0;
///////////////////////////////////////求的小于1000000的斐波那契数个数代码
/*int i, count = 0;;
for (i = 0;; i++)
{
if (fb(i) > 1000000)
count = 1;
if (count > 0)
{
cout << fb(i)<<endl;
cout << i;
break;
}
}*/
}