[HDU 5351 MZL's Border]
题意
  定义字符串$f_1=b,f_2=a,f_i=f_{i-1}f_{i-2}$。

  对$f_n$的长度为$m$的前缀$s$,

  求最大的$k$满足$s[1]=s[m-k+1],s[2]=s[m-k+2]...s[k]=s[m]$


Solution

  先列出前几个字符串

  $f_3=ab,f_4=aba,f_5=abaab,f_6=abaababa,f_7=abaababaabaab$。

  对于n,m。

  假设$f_{n-1}$的长度大于等于$m$,那么相当于求n-1,m。

  假设$f_{n-1}$的小于$m$

  由斐波那契的性质,答案要么是$m-length(f_{n-1})$,

  要么是$m-length(f_{n-2})$

  通过对前几个字符串的分析可以发现,当$m+1<length(f_n)$时答案是后者。

  于是只要先把前1000个字符串的长度求出来。需要使用高精度。

  然后直接按照上面的规则判断就行了。

#include <bits/stdc++.h>
#define lson x << 1
#define rson x << 1 | 1
#define LL long long
#define se second
#define fi first
#define LL long long
using namespace std;const int N = 1003;string  fib[N], m, ans;inline string add ( string a, string b )
{if ( a.size() < b.size() ) swap ( a, b );int la = a.size(), lb = b.size(), x = 0, i = 0;for ( i = 0; i < lb; ++i ) {x += ( a[i] - '0' + b[i] - '0' );a[i] = '0' + x % 10;x /= 10;}while ( x && i < la ) {x += ( a[i] - '0' );a[i] = '0' + x % 10;x /= 10;++i;}if ( x ) a += '0' + x;return a;
}inline string sub ( string a, string b )
{int la = a.size(), lb = b.size(), x = 0, i = 0;for ( i = 0; i < lb; ++i ) {if ( a[i] - x >= b[i] ) {a[i] = a[i] - x - b[i] + '0';x = 0;} else {a[i] = 10 + '0' + a[i] - b[i] - x;x = 1;}}while ( x && i < la ) {if ( a[i] != '0' ) {a[i] = a[i] - 1;x = 0;} else {a[i] = '9';++i;}}i = la - 1;while ( a[i] == '0' && i != 0 ) {a.erase ( a.begin() + i );--i;}return a;
}int T, n;inline bool pd ( string a, string b )
{if ( a.size() == b.size() )  {for ( int i = a.size() - 1; i >= 0; --i ) {if ( a[i] != b[i] ) return a[i] > b[i];}return 0;}return a.size() > b.size();
}void make ( int n, string m )
{if ( n < 4 ) {ans = "0";return ;}if ( pd ( m, fib[n - 1] ) ) {string s1 = sub ( fib[n], "2" );if ( !pd ( m, s1 ) ) {ans = sub ( m, fib[n - 2] );} else {ans = sub ( m, fib[n - 1] );;}return ;} else make ( n - 1, m );
}void MOD ( string s, LL k )
{LL tem = 0;for ( int i = s.size() - 1; i >= 0; --i ) {tem = ( tem * 10 + s[i] - '0' ) % k;}cout << tem << endl;
}
int main()
{fib[0] = "0";fib[1] = "1";for ( int i = 2; i <= 1000; ++i ) {fib[i] = add ( fib[i - 1] , fib[i - 2] );}cin >> T;while ( T-- ) {cin >> n >> m;reverse ( m.begin(), m.end() );make ( n, m );MOD ( ans, 258280327 );}
}

View Code

转载于:https://www.cnblogs.com/keam37/p/4705003.html

HDU 5351 MZL's Border (规律,大数)相关推荐

  1. 2018 ICPC 焦作区域赛 Resistors in Parallel(找规律+大数)

    传送门 题目大意 给出电阻的并联公式,规定一个含有平方因子的数的1R=0\frac{1}{R}=0R1​=0.定义一个数的阻值为其所有的因子阻值并联求出的结果,问nnn以内并联后的最大的阻值是多少,输 ...

  2. HDU 6229 Wandering Robots 找规律+离散化

    题目链接:Wandering Robots 题解:先讲一下规律,对于每一个格子它可以从多少个地方来有一个值(可以从自己到自己),然后答案就是统计合法格子上的数与所有格子的数的比值 比如说样例的3 0格 ...

  3. Doom 规律+大数

    Doom 比赛的时候没有做出来,补题. 题意:题目定义了一个斐波那契串 1) fib1=b; 2) fib2=a; 3) fibi=fibi-1fibi-2,i>2 举例,fib3=ab,fib ...

  4. HDU - 1002 A + B Problem II(大数)

    题目链接:点击查看 题目大意:大数加法 题目分析:第一次用Java写ACM,还是有点小激动滴,有几点需要注意的: 公共类名要写Main 不要提交包名 注意输入输出 上代码吧,纪念一下: import ...

  5. HDU - 6267 (概论/找规律/递推)

    VJ地址 题目大意: 有n个节点 从0-(n-1),连边的规律为 即i点的父亲只能是比i小的数,而且是随机的,现在随机选择应该一个节点作为根,求这子树的和的期望是多少. 思路:可以知道总共有(n-1) ...

  6. HDU 5914 Triangle 数学找规律

    Triangle 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Description Mr. Frog has n sticks, who ...

  7. hdu 1998 奇数阶魔方 规律

    题目链接 奇数阶魔方 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  8. 2018 焦作 onsite E - Resistors in Parallel(数学或规律+大数)

    题目链接:http://codeforces.com/gym/102028/problem/EE. Resistors in Parallel time limit per test 2.0 s me ...

  9. Resistors in Parallel(找规律+大数)

    题意:https://codeforces.com/group/ikIh7rsWAl/contest/254825/problem/E 给你一个n,计算n / Sigma(1~n)的d(是n的只出现一 ...

  10. hdu 4043 FXTZ II [ 概率 + Java大数]

    传送门 FXTZ II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

最新文章

  1. python 错误之SyntaxError: Missing parentheses in call to 'print'
  2. 递归/回溯:Subsets II求子集(有重复元素)
  3. mysql ibd文件还原_Mysql 通过ibd文件恢复数据
  4. 导入torchvision出现:AttributeError: module ‘torch.jit‘ has no attribute ‘unused‘错误
  5. SAP UI5 初学者教程之二十八 - SAP UI5 应用的集成测试工具 OPA 介绍试读版
  6. c语言鼠标移动响应,CSS鼠标响应事件经过、移动、点击示例介绍
  7. mysql schema数据混乱_MySQL之Schema与数据类型优化
  8. 软件测试用例设计方法-判定表法
  9. AppStore刷榜那些事儿:猪,也是这么想的
  10. linux dup用法,Linux:dup和dup2文件描述符及函数解析,dupdup2
  11. updateStateByKey算子入门案例
  12. 带动量的随机梯度下降法_梯度下降法(SGD)原理解析及其改进优化算法
  13. python爬虫入门案例,持续更新
  14. 基于codebook背景建模的运动目标检测
  15. 智能颈椎按摩仪的特点和功能
  16. java informix_Informix 数据库的数据类型
  17. python 列表写入excel_Python读写excel表格的方法一
  18. 如何在 Ubuntu 上配置 ROS和LPMS IMU传感器
  19. 华芯微特SWM181学习笔记--GPIO应用与环境搭建
  20. MIS迭代一:增删改查功能测试

热门文章

  1. 提交失败重连java_RxJava出错重连
  2. 图像去雾算法_HTN图像去雾开源代码
  3. linux主备dns切换时间,linux下主从DNS配置相关知识(二)
  4. php 快速路由,基于FastRoute的快速路由(支持RESTful)
  5. 力扣-88 合并两个有序数组
  6. Android JNI
  7. 工作闲暇-曾经的“伪”前端+切图工作
  8. bzoj 2959: 长跑【LCT+并查集】
  9. Flutter自定义布局套路
  10. Docker 日常指令