题目名称:MZL's Border

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5351

题意:给出fib 1 = b,fib2 = a ; fib i =
fib i-1 fib i-2 ,这个递推关系,比如。fib 3 = ab,fib 4 =
aba 然后说了一大堆东西,事实上就是要我们求前m个字母中满足 i < n , s [ 1 : i ]=s [ n - i - 1 : n ] 。( s [ 1 : i ]表示串 s 的子串s1s2s3s4s4...si ) 的 i 的最大值

思路:看到这道题是不是自然而然的就想到了KMP。对,一開始我用KMP准备把最大的那个串给保存在next数组里面,因为该串是斐波拉切增长的,,所以数组爆了,然后这道题每一次是把上一个串加到后面,所以想到了打表找规律。0  0 | 1  1 | 2 3  2 3 | 4 5
6  4 5 6 | 7 8 9 10 11  7 8 9 10 11 | 12 13 14 15 16 17 18 19  12 13 14 15 16 17 18 19  这样是不是规律就出来了啊==。然后还得用高精度==。因为JAVA 的高精度比較easy写,以下给出JAVA的代码

代码例如以下:

import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int t;
while(in.hasNext())
{
t=in.nextInt();
for(int pp=0;pp<t;pp++)
{
BigInteger n,m,sum=BigInteger.ONE;
BigInteger cnt=BigInteger.ZERO;
BigInteger ss[] = new BigInteger[3];
ss[1]=BigInteger.ONE;ss[0]=BigInteger.ONE;
cnt=new BigInteger("4");
n = in.nextBigInteger();
m = in.nextBigInteger();
BigInteger two = new BigInteger("2");
if(new BigInteger("3").compareTo(m)==1) //m<3
System.out.println("0");
else{
for(;;)
{
ss[2]=ss[1].add(ss[0]);
if(( (cnt.add(ss[2].add(ss[2]))).compareTo(m) ) ==1) //cnt+ss[2]*2>m
break;
cnt=cnt.add(ss[2].add(ss[2])); //cnt=cnt+ss[2]*2
sum=(sum.add(ss[2])).mod(new BigInteger("258280327")); //sum=(sum+ss[2])%258280327
ss[0]=ss[1];
ss[1]=ss[2];
}
if(m.subtract(cnt).compareTo(ss[2])==1)
System.out.println( (m.subtract(ss[2]).add(sum).subtract(cnt)).mod(new BigInteger("258280327")));
else
System.out.println( (m.add(sum).subtract(cnt) ) .mod(new BigInteger("258280327")));
// if(m-cnt>ss[2])
// cout<<(m-ss[2]+sum-cnt)%258280327<<endl;
// else
// cout<<(m+sum-cnt)%258280327<<endl;
// }
}
}
}
}
}

hdu5351的更多相关文章

  1. hdu5351 MZL's Border(规律题,java)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud MZL's Border Time Limit: 2000/1000 MS (Ja ...

  2. HDU-5351

    MZL's Border Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  3. [hdu5351]找规律,大整数模板

    题意:f(1)="a",f(2)="b",f(i)=f(i-1)+f(i-2),"+"表示连接符.给定n,m,求f(n)的前m个字符的“ne ...

随机推荐

  1. poi读取合并单元格

    poi读取合并单元格 学习了:http://blog.csdn.net/ycb1689/article/details/9764191 进行了列合并单元格的修正:原来是我自己找错了地方: import ...

  2. Oracle 用户管理(一)

    1     创建用户     create user @username identified by @password     比如:create user aobama identified by ...

  3. struts自己定义拦截器--登录权限控制

    说明:该自己定义的拦截器实现用户登录的权限控制. login.jsp--->LoginAction--重定向-->MainAction--->main.jsp 一.1.整体的步骤: ...

  4. Line(扩展欧几里得)

    题意:本题给出一个直线,推断是否有整数点在这条直线上: 分析:本题最重要的是在给出的直线是不是平行于坐标轴,即A是不是为0或B是不是为0..此外.本题另一点就是C输入之后要取其相反数,才干进行扩展欧几 ...

  5. ”危险“的RESTRICT与GCC的编译优化(编程者对编译器所做的一个“承诺”:使用restrict修饰过的指针,它所指向的内容只能经由该指针修改)

    restrict是C99标准中新添加的关键字,对于从C89标准开始起步学习C语言的同学来说(包括我),第一次看到restrict还是相当陌生的.Wikipedia给出的解释如下: In the C p ...

  6. Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/10766053 之前用JakeWharton的开源框架ActionBarSherlock ...

  7. 0x20 搜索

    这里基本就是入门吧. 可达性统计 用bitset搞的判重,发现这东西是真好用哈,空间还小 #include<cstdio> #include<iostream> #includ ...

  8. Oracle动态性能表-V$SESSION_WAIT,V$SESSION_EVENT

    (1)-V$SESSION_WAIT 这是一个寻找性能瓶颈的关键视图.它提供了任何情况下session在数据库中当前正在等待什么(如果session当前什么也没在做,则显示它最后的等待事件).当系统存 ...

  9. SpringBoot项目部署

    项目背景     个人博客:http://www.huangyichun.cn/blog/8     采用SpringBoot开发的个人博客,部署到腾讯云服务器上,服务器系统为ubuntu16.04, ...

  10. 含神经网络的离线AI翻译 APP

    功能特性 下载 https://www.microsoft.com/en-us/store/p/translator/9wzdncrfj3pg