阿猫的实验

阿猫的实验

Time Limit:10000MS  Memory Limit:65536K
Total Submit:6 Accepted:4 
Case Time Limit:1000MS

Description

【问题描述】 
阿猫很喜欢生物学。他还在今年的全国中学生生物学联赛中获得了一等奖。 
一天,阿猫在实验室听说了这样一种繁殖能力很强的老鼠。 
这种老鼠在出生后的第一个月,可以生出a对老鼠;第二个月,可以生出b对老鼠;第三个月及以后的每个月,都可以生出c对老鼠。 
阿猫对此十分好奇。他很想知道,如果他有一对刚出生的老鼠,按最理想的模式繁殖,且老鼠不死,那么最少需要多少个月它们就可以覆盖整个地球。 
为了完成这一猜想,阿猫需要知道这种老鼠在第N个月时的数量。 

Input

输入文件cat.in只有一行,四个数,分别为a,b,c,N(0<=a<=b<=c<=100,N<=3000),其含义为题目所述。

Output

输出文件cat.out只有一个数,为第N个月老鼠的数量。

Sample Input

0 1 1 11

Sample Output

144

最近在学习JAVA,用JAVA写高精度还是很方便的,比较容易错的就是不初始化数组的值,因为我也没怎么看书,就是翻翻JAVA的输入输出,导致调试了蛮久不知道错哪,老出现java.lang.NullPointerException这句话,以后要注意了。
感觉题目有点点问题,题意应该要求的是第N个月老鼠对的数量,
下面是AC代码:
import java.util.*;
import java.math.*;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	     Scanner	cin= new Scanner(System.in);
	     int i,n;
	     BigInteger a,b,c,t;
	     a=cin.nextBigInteger();  b=cin.nextBigInteger();  c=cin.nextBigInteger();  n=cin.nextInt();
	     
	     BigInteger[] f=new BigInteger [3010];
	     
	       
	     for(i=0;i<=n+2;i++)
	    	 f[i]=BigInteger.ZERO;

	     f[1]=new BigInteger("1");
	   //  System.out.println(f[0]);
	    
	     for(i=2;i<=n+1;i++){
	    	 
	    	 t=f[i].add(f[i-1]);
	    	 
	    	 f[i]=t;
	    	 
	 		if(i>=2)
	 			f[i]=f[i].add(a.multiply(f[i-1].subtract(f[i-2])));
	 		if(i>=3)
	 	
	 			f[i]=f[i].add(b.multiply(f[i-2].subtract(f[i-3])));

	 		if(i>=4)
	
	 			f[i]=f[i].add(c.multiply(f[i-3]));
	 	//	 System.out.println(f[i]);
	 	}
 
	
	     System.out.println(f[n+1]);
	    	
	    
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值