import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case int sum = in.nextInt(); if(sum==0||sum==1){ //当x为前面的两个 0或1 的时候 System.out.println(0); //返回0步 return; //结束 } int a=0; //第一个斐波拉契数 int b=1; //第二个斐波拉契数 int c; //后面一个斐波拉契数 int left=0; //左端 int right=0; //右端 while(true){ //一直循环,直到break 或 return c=a+b;//当前斐波拉契数(因为 0 1 已经判断了) if(c==sum||b+c==sum){ //sum为当前斐波拉契数或者后面的一个斐波拉契数 System.out.println(0); //直接返回0步 return; } if(sum>c&&(b+c)>sum){ //若满足大于当前的且小于之后的 left=c; right=b+c; break; } a=b; //为计算下一位斐波拉契数做准备 b=c; } if((sum-left)>(right-sum)){ //返回小的 System.out.println(right-sum); }else{ System.out.println(sum-left); } } } }