POJ 1405 贪心+找规律+高精度 in JAVA

每次都要剩尽可能少 就是找尽可能的小的分母

典型的贪心

找规律可以发现

答案序列是这样的:

2 3 7 43.。。

3=1*2+1

7=2*3+1(这里的2来自上式的1*2)

43=6*7+1(这里的6来自上式的2*3)

...

别小看这个简单的关系 接管只需要递推18次,但是数大的吓人,如果不用BigInteger就只能用字符串了。

这就是用到高精度的地方。有点非典型。

这道题险过,TL是1000M,一开始900多,改了改还是有800多。。

 

JAVA 代码如下:

import java.io.*; import java.math.*; import java.util.*; class Main { public static void main(String[] args) { BigInteger[] answer = new BigInteger[18]; BigInteger temp = BigInteger.valueOf(2);; answer[0] = BigInteger.valueOf(2); BigInteger one = BigInteger.valueOf(1); Scanner cin = new Scanner(new BufferedInputStream(System.in)); int n = cin.nextInt(); System.out.println(answer[0]); for(int i = 1;i < n;i++) { answer[i] = temp.add(one); temp = temp.multiply(answer[i]); System.out.println(answer[i]); } } }

你可能感兴趣的:(POJ 1405 贪心+找规律+高精度 in JAVA)