Problem Description
As is known to all, MZL is an extraordinarily lovely girl. One day, MZL was playing with her favorite data structure, strings.
MZL is really like Fibonacci Sequence , so she defines Fibonacci Strings in the similar way. The definition of Fibonacci Strings is given below.
1) fib1=b
2) fib2=a
3) fibi=fibi−1fibi−2, i>2
For instance, fib3=ab, fib4=aba, fib5=abaab .
Assume that a string s whose length is n is s1s2s3...sn . Then sisi+1si+2si+3...sj is called as a substring of s , which is written as s[i:j] .
Assume that i<n . If s[1:i]=s[n−i+1:n] , then s[1:i] is called as a Border of s . In Borders of s , the longest Border is called as s ' LBorder . Moreover, s[1:i] 's LBorder is called as LBorderi .
Now you are given 2 numbers n and m . MZL wonders what LBorderm of fibn is. For the number can be very big, you should just output the number modulo 258280327(=2×317+1) .
Note that 1≤T≤100, 1≤n≤103, 1≤m≤|fibn| .
MZL is really like Fibonacci Sequence , so she defines Fibonacci Strings in the similar way. The definition of Fibonacci Strings is given below.
1) fib1=b
2) fib2=a
3) fibi=fibi−1fibi−2, i>2
For instance, fib3=ab, fib4=aba, fib5=abaab .
Assume that a string s whose length is n is s1s2s3...sn . Then sisi+1si+2si+3...sj is called as a substring of s , which is written as s[i:j] .
Assume that i<n . If s[1:i]=s[n−i+1:n] , then s[1:i] is called as a Border of s . In Borders of s , the longest Border is called as s ' LBorder . Moreover, s[1:i] 's LBorder is called as LBorderi .
Now you are given 2 numbers n and m . MZL wonders what LBorderm of fibn is. For the number can be very big, you should just output the number modulo 258280327(=2×317+1) .
Note that 1≤T≤100, 1≤n≤103, 1≤m≤|fibn| .
Input
The first line of the input is a number
T
, which means the number of test cases.
Then for the following T lines, each has two positive integers n and m , whose meanings are described in the description.
Then for the following T lines, each has two positive integers n and m , whose meanings are described in the description.
Output
The output consists of
T
lines. Each has one number, meaning
fibn
's
LBorderm
modulo
258280327(=2×317+1)
.
Sample Input
2 4 3 5 5
Sample Output
1 2找找规律,然后模拟一下,注意有大数import java.io.*; import java.math.BigInteger; import java.util.*; public class Main { public static void main(String args[]) { Scanner cin = new Scanner(System.in); BigInteger f[][] = new BigInteger[1005][3]; int i; f[0][1]=BigInteger.ZERO; f[0][2]=BigInteger.ZERO; f[1][1]=BigInteger.ZERO; f[1][2]=BigInteger.ZERO; f[0][0]=BigInteger.ONE; f[1][0]=BigInteger.ONE; for (i=2;i<=1000;i++) { f[i][0]=f[i-1][0].add(f[i-2][0]); f[i][1]=f[i-1][2].subtract(f[i-1][1]); f[i][2]=f[i][1].add(f[i][0]).subtract(BigInteger.ONE); } int T=cin.nextInt(); for(;T>=1;T--) { int n; BigInteger m; n=cin.nextInt(); m=cin.nextBigInteger(); for(i=1;i<=1000;i++) { if(m.compareTo(f[i][0])<1) { m=f[i][1].add(m).subtract(BigInteger.ONE); m=m.mod(BigInteger.valueOf(258280327)); System.out.println(m); break; } else m=m.subtract(f[i][0]); } } } }