题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5351
题意:求Fibn的前m位的LBorder
思路:一开始完全没头绪,就开始一个个的写出来,最终就找出了规律,由于数据会很大用JAVA的大数会比较方便
代码:
import java.io.*;
import java.util.*;
import java.math.*;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
int T, n, i;
BigInteger m, mod, mm, ans = null;
mod = BigInteger.valueOf(258280327);
BigInteger[] a = new BigInteger[1005];
a[1] = BigInteger.ONE;
a[2] = a[1];
for (i = 3; i < 1005; ++i) {
a[i] = a[i - 1].add(a[i - 2]);
}
Scanner cin = new Scanner(System.in);
while (cin.hasNext()) {
T = cin.nextInt();
while (T > 0) {
T--;
n = cin.nextInt();
m = cin.nextBigInteger();
mm = m.add(BigInteger.ONE);
for (i = 1; i < 1005; i++) {
if (mm.compareTo(a[i]) < 0) {
ans = m.subtract(a[i - 2]).mod(mod);
break;
}
}
System.out.println(ans);
}
}
cin.close();
}
}
L
B
o
r
d
e
r
L
B
o
r
d
e
r