hdu_5551_多校联赛5_1009

把表打出来一部分,轻松找到规律即可。
hdu_5551_多校联赛5_1009_第1张图片

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;
                }
            }
        }
    }
} 

你可能感兴趣的:(多校联赛)