把表打出来一部分,轻松找到规律即可。
import java.util.Scanner;
import java.math.BigInteger;
import java.math.BigDecimal;
public class Main{
public static void main(String []args){
Scanner cin=new Scanner(System.in);
int t;
BigInteger a[]=new BigInteger[1011];
a[1]=BigInteger.ONE;
a[2]=BigInteger.ONE;
for(int i=3;i<=1010;i++){
a[i]=a[i-1].add(a[i-2]);
}
int n;
t=cin.nextInt();
BigInteger two=new BigInteger("2");
BigInteger mo=new BigInteger("258280327");
BigInteger sum,tmp,m;
while(t!=0){
t--;
n=cin.nextInt();
m=cin.nextBigInteger();
sum= new BigInteger("0");
for(int i=1;i<=1000;i++){
tmp=a[i].multiply(two);
int res = m.compareTo(tmp);
if(res>0){
m=m.subtract(tmp);
sum=sum.add(tmp);
}
else{
res = m.compareTo(a[i]);
if(res>0) System.out.println(sum.divide(two).add(m).subtract(a[i]).subtract(BigInteger.ONE).mod(mo));
else System.out.println(sum.divide(two).add(m).subtract(BigInteger.ONE).mod(mo));
break;
}
}
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-06 02:14:43