PAT乙级(3)斐波那契凤尾 骨牌铺方格(water) 养兔子(water)
题目描述
NowCoder号称自己已经记住了1-100000之间所有的斐波那契数。为了考验他,我们随便出一个数n,让他说出第n个斐波那契数。当然,斐波那契数会很大。因此,如果第n个斐波那契数不到6位,则说出该数;否则只说出最后6位。
输入描述:
输入有多组数据。每组数据一行,包含一个整数n (1≤n≤100000)。
输出描述:
对应每一组输入,输出第n个斐波那契数的最后6位。
输入例子:
1
2
3
4
100000
输出例子:
1
2
3
5
537501
代码:
//先计算出所有的斐波那契数 然后再进行判断.
static long[] fib = new long[100001];
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
fib[1]=1;
fib[2]=2;
long num =0;
for (int i = 3; i <100001; i++)
{
fib[i] =(fib[i-1]+fib[i-2])%1000000;
}
while (sc.hasNext())
{
int n = sc.nextInt();
// System.out.println(fib[n]);
System.out.printf(n<25?"%d\n":"%06d\n",fib[n]);
//会有第6位是0的情况,按正常输出就会出错,所以要修改为%06d
//输出一个十进制的数,占六位,若不够六位则在这个数的前面补零
}
}
注意:
- 会有第6位是0的情况,按正常输出就会出错,所以要修改为%06d
- 先计算值,再进行输入
题目描述
在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-upO4kXny-1569994894737)(http://uploadfiles.nowcoder.com/images/20141114/51_1415949553292_1(1)].jpg)
输入描述:
输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (1≤n≤90)。
输出描述:
对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。
输入例子:
1
3
2
输出例子:
1
3
2
思路:
斐波那契变式题
代码:
import java.util.*;
public class Main{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
while (sc.hasNext())
{
int n = sc.nextInt();
if (n<=2) System.out.println(n);
else
{
long first=1;
long second=2;
long num =0;
for (int i = 3; i <=n; i++)
{
num = first+second;
first = second;
second =num;
}
System.out.println(num);
}
}
}
}
要用long来存储
题目描述**
一只成熟的兔子每天能产下一胎兔子。每只小兔子的成熟期是一天。 某人领养了一只小兔子,请问第N天以后,他将会得到多少只兔子。
输入描述:
测试数据包括多组,每组一行,为整数n(1≤n≤90)。
输出描述:
对应输出第n天有几只兔子(假设没有兔子死亡现象)
输入例子:
1
2
输出例子:
1
2
代码同上一题目
测试数据包括多组,每组一行,为整数n(1≤n≤90)。
输出描述:
对应输出第n天有几只兔子(假设没有兔子死亡现象)
输入例子:
1
2
输出例子:
1
2
代码同上一题目