hdu_5551_多校联赛5_1009

把表打出来一部分,轻松找到规律即可。

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

hdu_5551_多校联赛5_1009的相关文章

2015 HDU 多校联赛 5317 RGCDQ 筛法求解

2015 HDU 多校联赛 5317 RGCDQ 筛法求解 题目  http://acm.hdu.edu.cn/showproblem.php? pid=5317 本题的数据量非常大,測试样例多.数据量大, 所以必须做预处理.也就是用筛法求出全部的F[x],将全部F[x] 打印出来发现.事实上结果不大,最大的数值是7.所以对于每一个区间询问, 直接暴力求取有多少个 1 2 3 4 5 6 7 就可以,从大到小查找.假设出现2个以上 3-7 的数值,那么最大公约数就是该数字. 假设没有出现两个反复

2015 HDU 多校联赛 5326 Work

2015 HDU 多校联赛 5326 Work 题目: http://acm.hdu.edu.cn/showproblem.php?pid=5326 这题应该是本周二多校赛中,最简单的一道题目了. 解题思路: 就是回根. 用一个数组 root[i] = j 表示 i 的上级是 j , 对于每个输入的关系都做这样的处理.然后遍历每个编号直到root[i] 的结果为0 (因为根没有上级,所以根为0),在往根回退的过程中,用一个数组 cnt[i] 表示经过i这个点的次数. 最后就是遍历 cnt[i],

[2015hdu多校联赛补题]hdu5371 Hotaru&#39;s problem

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5371 题意:把一个数字串A翻过来(abc翻过来为cba)的操作为-A,我们称A-AA这样的串为N-sequence,现在给你一个数字串,问你这个串中最长的N-sequence子串长度 解:可以想到A-A是一个回文串,-AA也是一个回文串,那么首先Manacher跑一遍求出所有回文子串 可以想到任意两个互相覆盖的回文子串都可以表示成N-sequence 然后有三种搞法: 1.时间复杂度O(N*logN

2015 HDU 多校联赛 5363 Key Set

2015 HDU 多校联赛 5363 Key Set 题目: http://acm.hdu.edu.cn/showproblem.php?pid=5363 根据前面给出的例子,得出求解公式 fn = 2^(n-1) - 1, 数据量大,实际就是求幂次方. 可用分治法求解,复杂度O(nlogn) // 分治法求快速幂 #include <bits/stdc++.h> using namespace std; typedef unsigned long long ull; const int MO

[2015hdu多校联赛补题]hdu5348 MZL&#39;s endless loop

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5348 题意:给你一个无向图,要你将无向图的边变成有向边,使得得到的图,出度和入度差的绝对值小于等于1,如果无解输出-1 解:考虑奇数度的点一定会成对出现(因为所有度数和肯定是偶数个->因为一条边产生两度~),那么我们可以将奇数度的点两两一连消除掉(两奇数度点的出度入读差的绝对值都为1, 路径上的点的差绝对值为0) 然后偶数度的点可以成环,那么可以搜出所有的环 1 /* 2 * Problem: 3

hdu 5344 (多校联赛) MZL&#39;s xor --- 位运算

here:    首先看一下题吧:题意就是让你把一个序列里所有的(Ai+Aj) 的异或求出来.(1<=i,j<=n) Problem Description MZL loves xor very much.Now he gets an array A.The length of A is n.He wants to know the xor of all (Ai+Aj)(1≤i,j≤n) The xor of an array B is defined as B1 xor B2...xor B

hdu_5536_多校联赛4_1010

啊啊啊,简直要崩溃,题意是说有很多大水滴,当大水滴尺寸>=5时,会分裂成四个小水滴,然后向上下左右四个方向射去,当碰到另一个大水滴时就会融合到里面去,问你T时刻的状态. 思路极为简单的模拟,只需要模拟小水滴的状态就行,但是当时比赛现场管理员有很多误导,导致很多人不能够正确理解题意,首先,R为X的范围,C为Y的范围,admin直接说反,爆WA,其次,当大水滴分裂之后,原地点的状态表述不明,既然SIZE为0,那么以后由小水滴凝聚的时候会不会再次融合,这个地方就需要枚举题意,差评. 最后,放速度更快代

[2015hdu多校联赛补题]hdu5378 Leader in Tree Land

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5378 题意:给你一棵n个结点的有根树.因为是有根树,那么每个结点可以指定以它为根的子树(后面讨论的子树都是这个).现在我们把标号从1到n的n个minister派驻到这些结点上面(每个结点派驻一人),并规定任一子树中编号最大的minister 为该子树的领导,问你存在多少个不同的领导 解: 引用官方题解: 可以用求概率的思想来解决这个问题.令以i号节点为根的子树为第i棵子树,设这颗子树恰好有sz[i]

[2015hdu多校联赛补题]hdu5372 Segment Game

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5372 题意:进行n次操作,操作分两种,0和1,每一个0操作按出现顺序有一个编号(从1开始 0操作 0 x:询问[x, x+i](i为该操作的编号)区间内有多少个完整的线段,并加入线段[x, x+i](线段直接重叠不影响) 1操作 1 x:删除0操作中插入的编号为x的线段,(不影响其他线段,不会重复删除同一线段,删除的线段一定是已经插入的) 解:题目有一个重要的条件:后面插入的线段一定比前面的长.那么