Fibonacci Again
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 42641 Accepted Submission(s): 20356
Problem Description
There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2).
Input
Input consists of a sequence of lines, each containing an integer n. (n < 1,000,000).
Output
Print the word "yes" if 3 divide evenly into F(n).
Print the word "no" if not.
Print the word "no" if not.
Sample Input
0 1 2 3 4 5
Sample Output
no no yes no no no
Author
Leojay
斐波那契数列满足a(n+2)=a(n+1)+a(n)
观察数列中每项除3的余数,分别是1,2,0,2,2,1,0,1,1,2,0.
用数学归纳法可以证出这个规律(在此略过)
发现每八项出现一次循环
所以n满足n=8k+2或n=8k-2 (k是自然数)
至于你问的问题,两个数能被3整除,则这两个数的所有位数字之和能被3整除,当然这个结论基本没用
题意是要求能被3整除的数
所以为了避免大数据的产生,直接对每个数据求余,然后相加
import java.util.*;
public class p1021 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
long f1 = 7;
long f2 = 11;
long f3 = 1;
for(int i=2;i<=n;i++){
f3 = f1 + f2;
f1 = f2%3;
f2 = f3%3;
}
if(f3%3==0){
System.out.println("yes");
}else{
System.out.println("no");
}
}
}
}