运营推广计划怎么写广告优化师工资一般多少
题目:给定数列 1,1,1,3,5,9,17,⋯,从第 4 项开始,每项都是前 3 项的和。
求第 20190324 项的最后 4 位数字。
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
解题思路+代码:
代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;public class 数列求值 {public static void main(String[] args) throws IOException {int t = 1;for (int i = 1; i <= t; i++) {solve();}out.flush();}static void solve(){int n = 20190324;long backFour = fibonacci(n); //只获取后四位数out.println(backFour);}//创建斐波那契数列求和方法public static long fibonacci(int n){if(n<=0){return 0;}if(n==1){return 1;}long a = 1; //F(1)long b = 1; //F(2)long c = 1; //F(3)//从第4项开始for(int i = 4; i<=n; i++){long d =( a + b + c) % 10000; //避免溢出//重新赋值,相当于a、b、c全部后移a = b; b = c;c = d;}return c;//返回第n项的值}static FastReader in = new FastReader();static PrintWriter out = new PrintWriter(System.out);static class FastReader{BufferedReader br;StringTokenizer st;FastReader(){br = new BufferedReader(new InputStreamReader(System.in));}String next(){String str = "";while(st == null || !st.hasMoreElements()){try{str = br.readLine();}catch (IOException e){throw new RuntimeException(e);}st = new StringTokenizer(str);}return st.nextToken();}int nextInt(){return Integer.parseInt(next());}double nextDouble(){return Double.parseDouble(next());}long nextLong(){return Long.parseLong(next());}}
}
总结:这道题是求斐波那契数列中第n项的值,不过这道题加了一个要求(第n项值的后四位数)。传统的斐波那契数列是1,1,2,3,5,8,13……(从第3项开始是前两项的和),在本题中稍微改了一下是从第4项开始是前三项的和,但这并不影响解答该题。有一个关键点:求第20190324项值会造成数值溢出,因此需要%10000来避免溢出并输出值的后四位。(附加解释:这里面求解斐波那契数列值的后四位并不需要这么长段的代码,但这里面做了快读的操作,提高了读取数据的效率)。