1247: Hat‘s Fibonacci
描述
A Fibonacci sequence is calculated by adding the prevIoUs two members the sequence,with the first two members being both 1.
F(1) = 1,F(2) = 1,F(3) = 1,F(4) = 1,F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4)
Your task is to take a number as input,and print that Fibonacci number.
输入
Each line will contain an integers. Process to end of file.
For each case,output the result in a line.
Note:
No generated Fibonacci number in excess of 2005 digits will be in the test data,ie. F(20) = 66526 has 5 digits.
样例输入
100
样例输出
4203968145672990846840663646
题目来源
题目链接:http://tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=1247
题目大意:F(1) = 1,F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4),根据这个公式计算F(n)
数据保证了输出最多不超过2005位,但我自己人懒不想打表估计2005位的需要开多大的数组,所以用了一个滑动的数组进行计算
f[i%4] = f[(i-1)%4]+f[(i-2)%4]+f[(i-3)%4]+f[(i-4)%4]
JAVA代码:
?import java.io.*; import java.util.*; import java.math.*; public class Main { public static void main(String args[]) throws Exception { Scanner cin=new Scanner(system.in); BigInteger f[] = new BigInteger[10]; f[3]=f[2]=f[1]=f[0]=BigInteger.ONE; while(cin.hasNext()) { int a=cin.nextInt(); f[3]=f[2]=f[1]=f[0]=BigInteger.ONE; for(int i=4;i<a;i++) { f[(i)%4]=f[(i-1)%4].add(f[(i-2)%4].add(f[(i-3)%4].add(f[(i-4)%4]))); } System.out.println(f[(a-1)%4]); } } } ?
PYthon代码:
while True: try: n = int(input()) f = [1,1,1] for i in range(4,n+1) : f[i%4] = f[i%4]+f[(i-1)%4]+f[(i-2)%4]+f[(i-3)%4] print(f[(n-1)%4]) except EOFError: break
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。