博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu5351
阅读量:4593 次
发布时间:2019-06-09

本文共 1539 字,大约阅读时间需要 5 分钟。

题目名称:MZL's Border

题目链接:

题意:给出fib = b,fib= a ; fib = fib i-1 fib i-2 ,这个递推关系,比如。fib = ab,fib = 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
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<

转载于:https://www.cnblogs.com/yfceshi/p/7068658.html

你可能感兴趣的文章
CentOS 6.5优化开机启动服务
查看>>
mk文件配置第三方jar包,so文件
查看>>
Maven 进阶讲解(聚合)
查看>>
练习-模拟账号登录
查看>>
JDK(java development kit java开发工具包)的安装
查看>>
POJ 3233 - Matrix Power Series(矩阵快速幂)
查看>>
J-Robot,能走、能跳舞的机器人
查看>>
linux 下c语言调用终端命令
查看>>
orale中如何获取当前月份?
查看>>
程序设计语言.
查看>>
How to find First Non-Repeated Character from String
查看>>
排列与组合定理和公式
查看>>
20. Valid Parentheses
查看>>
eval()和$.parseJSON()注意事项
查看>>
eclipse-帮助文档
查看>>
产品笔记
查看>>
MyEclipse如何调试
查看>>
Java_Set用法总结
查看>>
Codeforces Round #160 (Div. 2) D. Maxim and Restaurant(DP)
查看>>
Exchange Port
查看>>