Doom 规律+大数
Doom
比赛的时候没有做出来,补题。
题意:题目定义了一个斐波那契串
1) fib1=b;
2) fib2=a;
3) fibi=fibi-1fibi-2,i>2
举例,fib3=ab,fib4=aba,fib5=abaab
我们暂时将字符串sisi+1si+2si+3…sj记做s[i:j]
求满足s[1:i]=s[m-i+1:m](i<m)的i的最大值,记做LBorderm
例如m=5时,LBorderm=2,因为abaab中前两个和末尾两个相同,即黑色部分
解题思路:
一看到题目的数据这么大,理所当然就会想到必定存在规律,先列出几项观察一下
m LBorderm D-value(差值)
1 0 1
2 0 2
3 1 2
4 1 3
5 2 3
6 3 3
7 2 5
8 3 5
9 4 5
10 5 5
11 6 5
12 4 8
13 5 8
14 6 8
由上述例子可知,m与结果之间的差值是斐波那契数,仔细观察一下,便会得出这样一个结论:
当我们找到第一个i满足m+1<|fibi|时,LBorderm=m-|fibi-2|(|fibi-2|表示斐波那契串fibi-2的长度)
1 import java.util.*; 2 import java.io.*; 3 import java.math.*; 4 5 public class Main { 6 public static Scanner cin = new Scanner(new BufferedInputStream(System.in)); 7 public final static int MS = 1005; 8 public final static BigInteger MOD = new BigInteger("258280327"); 9 public final static BigInteger[] fib = new BigInteger[MS]; 10 static { 11 fib[1] = BigInteger.ONE; 12 fib[2] = new BigInteger("2"); 13 for(int i = 3; i < MS; i++) 14 fib[i] = fib[i - 1].add(fib[i - 2]); 15 } 16 public static void main(String[] args) { 17 int T, n; 18 BigInteger m; 19 T = cin.nextInt(); 20 while (T-- > 0) { 21 n = cin.nextInt(); 22 m = cin.nextBigInteger(); 23 m.add(BigInteger.ONE); 24 for (int i = 1; i < MS; i++) { 25 if (fib[i].compareTo(m) > 0) { 26 System.out.println(m.subtract(fib[i - 2]).mod(MOD)); 27 break; 28 } 29 } 30 } 31 } 32 }
转载于:https://www.cnblogs.com/hutaishi/p/4705902.html
Doom 规律+大数相关推荐
- 2018 ICPC 焦作区域赛 Resistors in Parallel(找规律+大数)
传送门 题目大意 给出电阻的并联公式,规定一个含有平方因子的数的1R=0\frac{1}{R}=0R1=0.定义一个数的阻值为其所有的因子阻值并联求出的结果,问nnn以内并联后的最大的阻值是多少,输 ...
- 2018 焦作 onsite E - Resistors in Parallel(数学或规律+大数)
题目链接:http://codeforces.com/gym/102028/problem/EE. Resistors in Parallel time limit per test 2.0 s me ...
- Resistors in Parallel(找规律+大数)
题意:https://codeforces.com/group/ikIh7rsWAl/contest/254825/problem/E 给你一个n,计算n / Sigma(1~n)的d(是n的只出现一 ...
- Icpc 焦作站现场赛 E 题解
这道题当时做的时候推不出来,晚上去找题解,不是Java,就是Python,对于只会c/c++的萌新,哎,难受.硬着头皮看了好久,大概懂了思路,第二天自己把前天的又推了一遍发现是自己计算错误的问题,要被 ...
- 2019爪哇部落第十届新生选拔赛 题解
博采众长,共同进步 A.空军十一号 阅读题 筛选信息 送气球 B.小爪的子阵和 贪心 最大连续字段和的二维升级版 C.爪爪逃逸 模拟+思维 D.小爪的三视图 模拟 立方体 暴力+思维 E.爪哇的路 最 ...
- 4. linux调用文件计算阶乘前n项和_用一道有趣的小题谈谈性能优化--求阶乘和的末6位
此题来源:算法竞赛入门经典(第2版) P21 /** * 输入n, 计算 S = 1! + 2! + ... n! 的末六位(不含前导0).* n < 10^6* n! 表示阶乘, 是前n个正整 ...
- UVA11774 Doom‘s Day【数学规律+GCD】
We all know about the legend of tower of Hanoi. It is said that the world will end after finishing t ...
- 2018焦作ICPC E - Resistors in Parallel(规律+Java大数)
2018焦作ICPC E - Resistors in Parallel题目链接 Time limit 2000 ms Memory limit 1048576 kB In this physic ...
- ACM-ICPC Jiaozuo Onsite 2018 Resistors in Parallel (思维+java大数+找规律)
题目来源 ACM-ICPC Jiaozuo Onsite 2018 题目粘贴过来有点变化,既然来了肯定见过原题~~嘻嘻~~ In this physics problem, what we are c ...
最新文章
- 新浪短网址生成java_如何生成t.cn的短链接?新浪短网址怎么生成的?
- 《图像处理知识》宝藏总纲
- 用c语言运行Linux命令,使用execv(C语言)从linux命令提示符运行命令
- 贪吃蛇代码c 语言,刚学C语言,想写一个贪吃蛇的代码
- NodeMCU学习(四):与其他设备通信
- android可以root的版本,Android8.0以上系统ROOT时,Magisk框架替代SpuerSU
- STM32PCB原理图
- java计算税后工资switch语句_计算个人所得税!switch语句
- android 指纹存储密码,Android指纹登录/指纹支付简述
- 我有一个梦,叫“禾下乘凉梦“!
- 在视图列中显示文档所有读者和作者
- 基于springboot 支付宝app端支付,可用于uni-app使用
- ⌨RK61键盘使用方法
- 长沙银河计算机学校,长沙银河中等职业学校办学特色
- android 上最强的计算器,史上最强超级计算器发布!完爆科学计算器
- mysql 1308_Mysql恢复数据报ERROR1308:LEAVEwithnomatchinglabel_MySQL
- Ambiguous handler methods mapped for 'xxx'的解决办法
- linux cat命令,Linux cat命令使用方法详解
- 应用程序无法正常启动(0xc0000142)。请单击“确定”关闭应用程序
- 头歌-信息安全-病毒分析与防御
热门文章
- Scala函数简化写法
- 【视频】vue组件之$emit父子组件间值的传递
- 解决oracle中文数据乱码的问题
- MySQL repeat复制函数示例
- aspose.cells html excel导出,C#使用Aspose.Cells导出Excel简单实现
- 通过IDEA查看jar包中的依赖关系
- 《剑指offer》——04. 二维数组中的查找——暴力法、线性查找——java实现
- ajax注册表单用户名实时验证,Ajax注册表单用户名实时验证..doc
- python os模块system_python 中 os.system 的本质 | 编程知识2
- stm32之实时时钟RTC(掉电计时保持、秒中断、闹钟中断、溢出中断)