2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需要能快速根据编号求出父亲的编号. 斐波那契数列:1.2.3.5.8.13.21... 第10对兔子的父节点:斐波那契数列中小于10的最大项为8,所以第10对兔子的父节点为10-8=2. 很容易理解:第5个月时,共有8对兔子(斐波那契第5项),到了第6个月时,共13对兔子.多出的5对兔子,一定是已经成…
题目:斐波那契数列,又称黄金分割数列(F(n+1)/F(n)的极限是1:1.618,即黄金分割率),指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.…….在数学上,斐波纳契数列以如下被以递归的方法定义: F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 递归实现——自上而下 在很多C语言教科书中讲到递归函数的时候,都会用Fibonacci作为例子.因此很多程序员对这道题的递归解法非常熟悉,看到题目就能写出如下递归求解的代码: long Fib…
废话不多说,直接上代码 #include "stdio.h" #include "queue" #include "math.h" using namespace std; /////////////////////////////////////////////////////////////////////////// //一:递归实现 // 使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1…
1.题目 求 \[\sum_{i=1}^n \sum_{j=1}^m \gcd(F_i,F_j) \] 其中 \(F_k\) 表示斐波那契数列的第 \(k\) 项,对 \(10^9 + 7\) 取模. 多组数据. 2.题解 莫比乌斯反演板子题,但是太菜了,多做了一次反演,复杂度变为 \(tn\sqrt{n}\) .实际是 \(t\sqrt{n}\) 直接推式子吧. 首先需要知道性质,\(\gcd(F_i,f_j)=F_{\gcd(i,j)}\) 这个性质是一道板子题,为洛谷上的斐波那契公约数,证…
--利用sqlserver来运算斐波那契规律 --利用事物与存储过程 declare @number intdeclare @A intdeclare @B intdeclare @C int set @A=1 set @B=2 set @Number=3 select @C=@A+@B while(@Number<60) begin    set @C=@A+@B  if(@@ERROR<>0)  goto errorhandler  print N'第'+convert(varcha…
题目传送门 题目描述 小$C$养了一些很可爱的兔子.有一天,小$C$突然发现兔子们都是严格按照伟大的数学家斐波那契提出的模型来进行繁衍:一对兔子从出生后第二个月起,每个月刚开始的时候都会产下一对小兔子.我们假定,在整个过程中兔子不会出现任何意外.小$C$把兔子按出生顺序,把兔子们从$1$开始标号,并且小$C$的兔子都是$1$号兔子和$1$号兔子的后代.如果某两对兔子是同时出生的,那么小$C$会将父母标号更小的一对优先标号.如果我们把这种关系用图画下来,前六个月大概就是这样的: 其中,一个箭头$A…
题目链接:https://vjudge.net/problem/UVA-12470 题目意思:我们都知道斐波那契数列F[i]=F[i-1]+F[i-2],现在我们要算这样的一个式子T[i]=T[i-1]+T[i-2]+T[i-3]的第n想是多少,很套路的矩阵快速幂,入门题,算是熟悉矩阵快速幂的操作吧. 代码: //Author: xiaowuga #include<bits/stdc++.h> #define maxx INT_MAX #define minn INT_MIN #define…
先说一个规律: 如图将每个月出生的兔子的编号写出来,可以发现一只兔子在哪一列他的父亲就是谁. 每列的首项可以通过菲波那契求得. 然后你就可以像我一样通过这个规律打表每个点的父亲,预处理出倍增数组,倍增求LCA,省掉了建树.期望得分70,实际得分50. 但是其实这已经很接近正解了:对于点i,那么fa[i]+(i所在行首项)-1=i,移项,首项可以二分求得,就可以用Olog60的复杂度找到一个点的父亲节点,所以对于每次询问暴力求就行了. #include<algorithm> #include&l…
就是找规律,发现每个父亲和孩子的差值都是距儿子最大的fibonacc 也是可证的 f[i]表示当前月的兔子总数 f[i]=f[i-1]+f[i-2](f[i-2]是新生的,f[i-1]是旧有的) 然后又学了一下set的用法 1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 #include<algorithm> 5 #include<cmath> 6 #include<…
a,b = 0, 1 while b<100: print (b), a, b = b, a+b…
尾递归会将本次方法的结果计算出来,直接传递给下个方法.效率很快. 一般的递归,在本次方法结果还没出来的时候,就调用了下次的递归, 而程序就要将部分的结果保存在内存中,直到后面的方法结束,再返回来计算.如果递归比较大,可能会照成内存溢出. 实践证明,尾递归 ,确实比普通递归效率高. 下面的例子 ,用 普通递归需要10s完成 , 而用尾递归,只用了1s不到 package com.zf.dg; /** * 题目 * 有一种母牛,出生后第三年,开始生育,每年都生一头 母牛(貌似单性生育,这里就没公牛什…
一.斐波那契数列 目标: 编写fib.py脚本,主要要求如下: 输出具有10个数字的斐波那契数列 使用for循环和range函数完成 改进程序,要求用户输入一个数字,可以生成用户需要长度的斐波那契数列 方案: 斐波那契数列就是某一个数,总是前两个数之和,比如0,1,1,2,3,5,8.由于输出是一串数字,可以用列表的结构存储.开始时,列表中有两个值,即0,1.然后通过循环向列表中追加元素,追加元素总是列表中最后两个元素值之和. 本例使用的是列表,不能使用元组,因为列表是一个可变类型,而元组是不可…
概要 本章介绍斐波那契堆.和以往一样,本文会先对斐波那契堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现:实现的语言虽不同,但是原理如出一辙,选择其中之一进行了解即可.若文章有错误或不足的地方,请不吝指出! 目录1. 斐波那契堆的介绍2. 斐波那契堆的基本操作3. 斐波那契堆的C实现(完整源码)4. 斐波那契堆的C测试程序 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3659060.html 更多内容:数据结…
概要 上一章介绍了斐波那契堆的基本概念,并通过C语言实现了斐波那契堆.本章是斐波那契堆的C++实现. 目录1. 斐波那契堆的介绍2. 斐波那契堆的基本操作3. 斐波那契堆的C++实现(完整源码)4. 斐波那契堆的C++测试程序 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3659069.html 更多内容:数据结构与算法系列 目录 (01) 斐波那契堆(一)之 图文解析 和 C语言的实现 (02) 斐波那契堆(二)之 C++的实现 (03) 斐波那…
概要 前面分别通过C和C++实现了斐波那契堆,本章给出斐波那契堆的Java版本.还是那句老话,三种实现的原理一样,择其一了解即可. 目录1. 斐波那契堆的介绍2. 斐波那契堆的基本操作3. 斐波那契堆的Java实现(完整源码)4. 斐波那契堆的Java测试程序 转载请注明出处: 更多内容:数据结构与算法系列 目录 (01) 斐波那契堆(一)之 图文解析 和 C语言的实现 (02) 斐波那契堆(二)之 C++的实现 (03) 斐波那契堆(三)之 Java的实现 斐波那契堆的介绍 斐波那契堆(Fib…
题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数). 题目描述 请你求出第n个斐波那契数列的数mod(或%)2^31之后的值.并把它分解质因数. 输入输出格式 输入格式: n 输出格式: 把第n个斐波那契数列的数分解质因数. 输入输出样例 输入样例#1: 5 输出样例#1: 5=5 输入样例#2: 6 输出样例#2: 8=2*2*2 说明 n<=48 97年的陈…
这道题其实是真的数学巨佬才撸的出来的题目了 但如果只知道结论但是不知道推导过程的我感觉证明无望 首先这道题肯定不能直接搞,而且题目明确说明了一些方法的问题 所以就暗示我们直接上矩阵了啦 但是如果直接搞还要高精度,不仅很烦而且绝壁TLE 所以我们引出性质,其中f[x]表示斐波那契数列的第x项: gcd(f[n],f[m])=f[gcd(n,m)] 具体的超详细的证明戳这里 然后题意相当于对f[gcd(n,m)]取膜1e9,就是最基本的矩阵优化了 关于矩阵优化斐波那契的板子题看这里 关于这题的COD…
http://acm.hdu.edu.cn/showproblem.php?pid=6198 F0=0,F1=1的斐波那契数列. 给定K,问最小的不能被k个数组合而成的数是什么. 赛后才突然醒悟,只要间隔着取k+1个数,显然根据斐波那契数列规律是不存在把其中两个数相加的结果又出现在数列中的情况(有特别的看下面),不就不会被组合出来了么? 这里有1 3 8...这种和1 2 5 13...两种,但因为后者任意一位的1,2可以被转化为3,这是唯一一种特例,所以我们采用前者.构造矩阵快速幂一下. #i…
题目链接:斐波那契数列 这题是数论的一个基本应用,还是很水,因为数据范围太水了,只有48,这也太小了.不过也有可能是当时的电脑速度跑得比较慢的原因.但是这个算法应该还是这个算法.主要思路就是递推求斐波那契数列第n项(还有其他方法,但此处够了),然后对它进行因数分解,就可以了,下面给代码: #include<bits/stdc++.h> using namespace std; void primes(int n){ printf("%d=",n); int q=sqrt(n…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2516 题目: Problem Description 1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍.取完者胜.先取者负输出"Second win".先取者胜输出"First win".   Input 输入有多组.每组第1行是2<=n<2^31. n=0退出.   Output 先取者负输…
Problem Description: 瓜瓜在玩着由红色和蓝色的大理石做成的玻璃珠,他将n个玻璃珠从左到右排成一个序列叫做无聊者序列.一个非空的红色和蓝色玻璃珠组成的序列是一个无聊者序列.这个序列的玻璃珠颜色是交替的,例如:序列(红色:蓝色:红色)和(蓝色)是一个无聊者序列.(红色:红色)不是无聊者序列.现在,瓜瓜想知道,从这个序列中选出一个无聊者子序列有多少种方法.并将它mod(1000000007). Input: 输入有多组数据,输入一个整数n(1 <= n <= 10^6),代表这个…
164分 rank11/64 这次考的不算太差,但是并没有多大的可能性反超(只比一小部分人高十几分而已),时间分配还是不均,T2两个半小时,T1半个小时,T3-额十几分钟吧 然额付出总是与回报成反比的,T1切了,T2超时60分,T3拿到了4分的好成绩,但某位不愿透露姓名的王鹤松说,他花了将近俩小时在T1上,20分钟T2,结果T1没有切掉,T2 比我高十分(QWQ) 这场考试下来发现自己还是有点儿紧张,中间去了好几次WC 对于这场考试,遗憾的是时间分配不均,没有拿到足够高的分数来给自己上保险,不过…
根据CC150的解决方式和Introduction to Java programming总结: 使用了两种方式,递归和迭代 CC150提供的代码比较简洁,不过某些细节需要分析. 现在直接运行代码,输入n(其中用number代替,以免和方法中的n混淆)的值,可以得出斐波那契数. 代码如下: /* CC150 8.1 Write a method to generate the nth Fibonacci number Author : Mengyang Rao note : Use two me…
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........ 如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式::F(n)=F(n-1)+F(n-2) .显然这是一个线性递推数列. 通项公式:   ,又称为"比内公式",是用无理数表示有理数的一个范例. 斐波拉契数列也可…
更新:我的同事Terry告诉我有一种矩阵运算的方式计算斐波那契数列,更适于并行.他还提供了利用TBB的parallel_reduce模板计算斐波那契数列的代码(在TBB示例代码的基础上修改得来,比原始代码更加简洁易懂).实验结果表明,这种方法在计算的斐波那契数列足够长时,可以提高性能. 矩阵方式计算斐波那契数列的原理: 代码: #include <tbb/task_scheduler_init.h> #include <tbb/blocked_range.h> #include &…
最近因为一些原因需要接触一些ACM的东西,想想写个blog当作笔记吧!同时也给有需要的人一些参考 话不多说,关于斐波那契数列(Fibonacci sequence)不了解的同学可以看看百度百科之类的,http://baike.baidu.com/link?url=KjZumXHZb0wCxYHW4qcfvJF2HIKFIxPuznpBUFweLXhboe6T48gT454LgnxralFKXYJ0-sMoeonnDOC_axuPfK 有条件的也可以看看wiki,https://zh.wikipe…
Pandigital Fibonacci ends The Fibonacci sequence is defined by the recurrence relation: F[n] = F[n-1] + F[n-2], where F[1] = 1 and F[2] = 1. It turns out that F541, which contains 113 digits, is the first Fibonacci number for which the last nine digi…
题目: 斐波纳契数列 查找斐波纳契数列中第 N 个数. 所谓的斐波纳契数列是指: 前2个数是 0 和 1 . 第 i 个数是第 i-1 个数和第i-2 个数的和. 斐波纳契数列的前10个数字是: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ... 样例 给定 1,返回 0 给定 2,返回 1 给定 10,返回 34 解题: 好像很简单的...递归是最简单的,貌似很耗时,结果:Time Limit Exceeded Java程序: 递归程序 class Solution { /…
斐波那契(Fibonacci)数列 问题描述 递归算法: package chapter2shuzizhimei.fibonacci; /** * Fibonacci数列递归求解 * @author DELL * */ public class Fibonacci1 { public static int fibonacci(int n){ if(n<=0) return 0; else if(n==1) return 1; else return fibonacci(n-1)+fibonacc…
C. DZY Loves Fibonacci Numbers time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standard output In mathematical terms, the sequence Fn of Fibonacci numbers is defined by the recurrence relation F1 = 1; F2 …