斐波那契数列

HDU 4549 M斐波那契数列(矩阵快速幂+费马小定理)

匿名 (未验证) 提交于 2019-12-02 23:26:52
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37868325/article/details/88849825 题意: 现在给出a, b, n,你能求出F[n]的值吗? Input 每组数据占一行,包含3个整数a, b, n( 0 <= a, b, n <= 10^9 ) Output 对每组测试数据请输出一个整数F[n],由于F[n]可能很大,你只需输出F[n]对1000000007取模后的值即可,每组数据输出一行。 Sample Input 0 1 0 6 10 2 Sample Output 0 60 设 ,很容易推出。 则 ,求出ab的指数后,在快速幂就可以了 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; #define maxn 10 #define mod 1000000007 ///n行m列的矩阵 struct AA { ll n,m,a[maxn][maxn]; void mem1() { memset(a,0,sizeof(a));///n=m时,初始化为单位阵 for(int i=0;i<n;i++) a[i][i]=1; } }; ///n行m列的aa矩阵 * m行k列的bb矩阵 AA mul(AA aa

斐波那契数列的两种实现

匿名 (未验证) 提交于 2019-12-02 23:05:13
Cpp # include <iostream> using namespace std ; // 递归实现 O(2^n) 一变二 二变四... long fib1 ( unsigned int no ) { if ( no == 0 ) { return 0 ; } else if ( no == 1 ) { return 1 ; } else { // 重复计算的值太多 return fib1 ( no - 1 ) + fib1 ( no - 2 ) ; } } ; // 非递归实现 O(n) long fib2 ( unsigned int no ) { long pre2 = 0 ; // 前面的前面 long pre1 = 1 ; // 前面 while ( no -- ) { long tmp = pre1 ; pre1 = pre2 + pre1 ; pre2 = tmp ; } return pre2 ; } int main ( int argc , char const * argv [ ] ) { cout << fib1 ( 0 ) << endl ; cout << fib1 ( 1 ) << endl ; cout << fib1 ( 30 ) << endl ; cout << fib2 ( 0 ) << endl ; cout << fib2 ( 1

python --实现斐波那契数列

匿名 (未验证) 提交于 2019-12-02 22:51:30
斐波那契数列 Fibonacci number 使用循环的方式实现: def fab (n): pre = 1 cur = 1 print (pre , cur , end = " " ) # loop for i in range (n- 2 ): pre , cur = cur , cur+pre print (cur , end = " " ) fab( 10 ) def fab (n): # if n < 2: # return 1 # return fab(n-1)+fab(n-2) return 1 if n< 2 else fab(n- 1 )+fab(n- 2 ) for i in range ( 10 ): print (fab(i) , end = " " ) 递归 实现方式的优化: def fab (n , pre= 0 , cur= 1 ): if n < 1 : return pre , cur = cur , pre+cur print (pre , end = " " ) fab(n- 1 , pre , cur) fab( 10 ) 文章来源: python --实现斐波那契数列

Python3 实例(二)

匿名 (未验证) 提交于 2019-12-02 22:51:08
Python 判断字符串是否为数字 以下实例通过创建自定义函数 is_number() 方法来判断字符串是否为数字: 实例(Python 3.0+) - - coding: UTF-8 - - Filename : test.py author by : www.runoob.com def is_number(s): try: float(s) return True except ValueError: pass try: import unicodedata unicodedata.numeric(s) return True except (TypeError, ValueError): pass return False 测试字符串和数字 print(is_number('foo')) # False print(is_number('1')) # True print(is_number('1.3')) # True print(is_number('-1.37')) # True print(is_number('1e3')) # True 测试 Unicode 阿拉伯语 5 泰语 2 中文数字 print(is_number('四')) # True 版权号 我们也可以使用内嵌 if 语句来实现: 执行以上代码输出结果为: False True True True

Python3 斐波那契数列II

匿名 (未验证) 提交于 2019-12-02 22:11:45
题目 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。 程序分析 就是斐波那契数列的后一项除以前一项。 a = 2.0 b = 1.0 s = 0 for n in range(1,21): s += a / b a,b = a + b,a print (s) 文章来源: https://blog.csdn.net/chexiansheng/article/details/89412528

用shell显示斐波那契数列前n项 Linux Ubuntu 18.04.2

匿名 (未验证) 提交于 2019-12-02 21:56:30
版权声明:作者:undefinedUser_1 来源:CSDN 本文为博主原创文章,转载请附上博文链接 https://blog.csdn.net/undefinedUser_1/article/details/90304577 文章目录 创建shell脚本 shell代码 运行shell脚本 总结 核心 代码: c = ${a} a = ${b} b = $(( ${c} + ${b} )) a=${b} 这时a就变成了a的下一位的值, b=$((${c}+${b})) 这时b就成了b的下一位的值,而 c=${a} 是为了保留a在变成下一位之前的值,方便b变成下一位的值时进行运算(因为a已经变成a的下一位了,所以不能直接+a。而如果直接 b=$((${a}+${b})) ,那么a下一位的值就改变了),然后把三个运算放在循环里就可以无限地算下去了。 创建shell脚本 mkdir mybin ),这样可以方便管理写过的shell脚本。进入该目录( cd mybin ),下面这条指令可以创建并进入mybin mkdir mybin; cd mybin Fibonacci.sh ),我这里用的时vim文本编辑器,也可以用vi来编辑,不过vim比vi好用,建议用vim。 Fibonacci是我这个shell脚本的文件名,读者可以自行命名更改。 vim Fibonacci.sh

JAVA基础(斐波那契数列)

匿名 (未验证) 提交于 2019-12-02 21:38:03
版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载,违者必究。 https://blog.csdn.net/Cricket_7/article/details/90476741 1,实现效果 需求:不死神兔 故事得从西元1202年说起,话说有一位意大利青年,名叫斐波那契。 在他的一部著作中提出了一个有趣的问题:假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡, 问:一对刚出生的兔子,一年内繁殖成多少对兔子? 2,实现逻辑 1 1 2 3 5 8 13 21 1 = fun(1) 1 = fun(2) 2 = fun(1) + fun(2) 3 = fun(2) + fun(3) 3,实现代码 文章来源: https://blog.csdn.net/Cricket_7/article/details/90476741

Python实现斐波拉契数列

安稳与你 提交于 2019-12-02 19:47:39
斐波拉契数列   斐波那契数列(Fibonacci sequence),又称 黄金分割 数列、因 数学家 列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“ 兔子数列 ”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、…… 在数学上,斐波那契数列以如下被以 递推 的方法定义: F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*) Python实现斐波拉契数列: 方法一:用for循环逐个打印出数列的值 def fibonacci1(n): a,b = 0,1 for i in range(n): a,b =b,a+b print a 方法二:用while循环逐个打印出数列的值 def fibonacci2(n): a =0 b = 1 i =0 while i <n: print b a,b = b,a+b i = i+1 方法三:用递归的方法,加上for循环,把每次循环产生的新项增加到数列最后,最后一次性输出list def fibonacci3(n): lis =[] for i in range(n): if i ==1 or i ==0: lis.append(1) else: lis.append(lis[i-2]+lis[i-1]) print lis 方法四:用递归的方法

剑指offer——斐波那契数列

让人想犯罪 __ 提交于 2019-12-02 19:42:30
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 代码实现(Java) 1 public class Solution { 2 public int Fibonacci(int n) { 3 int preOne=0; 4 int preTwo=1; 5 int result=0; 6 if(n==0){ 7 return preOne; 8 } 9 if(n==1){ 10 return preTwo; 11 } 12 for(int i=2;i<=n;i++){ 13 result=preOne+preTwo; 14 preOne=preTwo; 15 preTwo=result; 16 } 17 return result; 18 } 19 } 来源: https://www.cnblogs.com/wangqiong/p/11761144.html

利用数组计算斐波那契数列

浪子不回头ぞ 提交于 2019-12-02 16:33:18
本题要求编写程序,利用数组计算菲波那契(Fibonacci)数列的前 N项,每行输出5个,题目保证计算结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如::1,1,2,3,5,8,13,...。 输入格式: 输入在一行中给出一个整数 N( 1)。 输出格式: 输出前 N个Fibonacci数,每个数占11位,每行输出5个。如果最后一行输出的个数不到5个,也需要换行。 如果输入的 N不在有效范围内,则输出"Invalid."。 输入样例1: 7 输出样例1: 1 1 2 3 5 8 13 输入样例2: 0 输出样例2: Invalid. 1 #include<stdio.h> 2 int main() 3 { 4 int i, n; 5 int a[50] = { 1,1 }; 6 scanf("%d", &n); 7 if (n >= 1 && n <= 46) 8 { 9 for (i = 2; i < n; i++) 10 a[i] = a[i - 1] + a[i - 2];//先遍历一遍46个斐波那契数到数组 11 for (i = 0; i < n; i++) 12 { 13 printf("%11d", a[i]); 14 if ((i + 1) % 5 == 0)//i从0开始 所以加一除以5 15