您的位置:首页 > 其它

hdu_5551_多校联赛5_1009

2015-08-04 22:06 309 查看
把表打出来一部分,轻松找到规律即可。



[code]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;
                }
            }
        }
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: