方法一  用数组开,一般开到1e7,1e8 左右的数组就是极限了   对时间也是挑战

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e8+;
int a[maxn];
int32_t main()
{
a[]=;
a[]=;
for(int i=;i<maxn;i++)
a[i]=a[i-]%+a[i-]%;
cout<<a[maxn-]<<endl;
}

方法二  求第多少个斐波那契数      时间还是个问题

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e8+; int32_t main()
{
int x; x=;
if(x==) cout<<<<endl;
if(x==) cout<<<<endl;
if(x>)
{
int a=;
int b=;
int c=;
for(int i=;i<=x;i++)
{
c=(a+b)%;
a=b%;
b=c;
}
cout<<c<<endl;
}
}

方法三

通项公式             a[n]=1/sqrt(5)  (  ((1+sqrt(5))/2 )^n-((1-sqrt(5))/2)^n  );

这不是重点   重要的是 矩阵 求斐波那契数列

不是很会矩阵    推荐这个博客 https://blog.csdn.net/flyfish1986/article/details/48014523

也可以看我的代码(看了过程再来看比较好)

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int k=1e8;
int fj(int n)
{
if(n==) return ;
int m=n-;
int a11=,a12=,a21=,a22=;
int t1=,t2=;
int b11=,b12=,b21=,b22=;// kau su mi de
while(m)
{
if(m%==)
{
int c11=a11*b11+a12*b21;
int c12=a11*b12+a12*b22;
int c21=a21*b11+a22*b21;
int c22=a21*b12+a22*b22;
a11=c11%k;
a12=c12%k;
a21=c21%k;
a22=c22%k;
m--;
}
else if(m%==)
{
int c11=b11*b11+b12*b21;
int c12=b11*b12+b12*b22;
int c21=b21*b11+b22*b21;
int c22=b21*b12+b22*b22;
b11=c11%k;
b12=c12%k;
b21=c21%k;
b22=c22%k;
m=m/;
}
}
return a11;
} int32_t main()
{
int n;
cin>>n;
int c=fj(n);
cout<<c<<endl;
}

{  f[n+1]  f[n] }  ={ 1 1}  ^n

{  f[n]  f[n-1}     = {1 0}

#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=1e5+;
const int mod=;
int MOD=mod;
struct Matrix {
int a[][];
void init() {
for (int i = ; i < ; i++) {
for (int j = ; j < ; j++)
a[i][j] = ;
}
}
void _init() {
init();
for (int i = ; i < ; i++) a[i][i] = ;
}
}A, B; Matrix mul(Matrix a, Matrix b) {
Matrix ans;
ans.init();
for (int i = ; i <; i++) {
for (int j = ; j < ; j++) {
if(a.a[i][j]) {
for (int k = ; k <; k++) ans.a[i][k] = (ans.a[i][k] + 1LL * a.a[i][j] * b.a[j][k]) % MOD;
}
}
}
return ans;
}
Matrix q_pow(Matrix a, int k) {
Matrix ans;
ans._init();
if(k <= ) return ans;
while(k) {
if(k&) ans = mul(ans, a);
a = mul(a, a);
k >>= ;
}
return ans;
}
int main(){
int n,m;
while(){
scanf("%d",&n); if(n==-) break;
Matrix a; a.init();
a.a[][]=; a.a[][]=;
a.a[][]=;
a=q_pow(a,n);
printf("%d\n",a.a[][]);
}
}

斐波那契数列的生成 %1e8 后的结果的更多相关文章

  1. Android NDK入门实例 计算斐波那契数列一生成jni头文件

    最近要用到Android NDK,调用本地代码.就学了下Android NDK,顺便与大家分享.下面以一个具体的实例计算斐波那契数列,说明如何利用Android NDK,调用本地代码.以及比较本地代码 ...

  2. Android NDK入门实例 计算斐波那契数列二生成.so库文件

    上一篇文章输生成了jni头文件,里面包含了本地C代码的信息,提供我们引用的C头文件.下面实现本地代码,再用ndk-build编译生成.so库文件.由于编译时要用到make和gcc,这里很多人是通过安装 ...

  3. 斐波拉契数列(Fibonacci)--用生成器生成数列

    斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&qu ...

  4. Python基础(二):斐波那契数列、模拟cp操作、生成8位随机密码

    一.斐波那契数列 目标: 编写fib.py脚本,主要要求如下: 输出具有10个数字的斐波那契数列 使用for循环和range函数完成 改进程序,要求用户输入一个数字,可以生成用户需要长度的斐波那契数列 ...

  5. JavaScript生成斐波那契数列

    常规写法 https://cn.bing.com/search?q=js+fibonacci+sequence&pc=MOZI&form=MOZSBR //Fibonacci func ...

  6. 斐波那契数列 yield 和list 生成

    def fab_demo4(max): a,n,b = 0,0,1 while n < max: yield b # 生成器走到这一步返回b,需要再次调用才能继续执行 a,b = b,a+b n ...

  7. Python(迭代器 生成器 装饰器 递归 斐波那契数列)

    1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...

  8. 求斐波那契数列的第n项

    问题描述:斐波那契数列是这样的一个数列,1,1,2,3,5,8,..,即前两项都是1,后面每一项都是其前面两项的和. 现在要你求出该数列的第n项. 分析:该问题是一个经典的数列问题,相信大家在很多语言 ...

  9. javascript . 03 函数定义、函数参数(形参、实参)、函数的返回值、冒泡函数、函数的加载、局部变量与全局变量、隐式全局变量、JS预解析、是否是质数、斐波那契数列

    1.1 知识点 函数:就是可以重复执行的代码块 2.  组成:参数,功能,返回值 为什么要用函数,因为一部分代码使用次数会很多,所以封装起来, 需要的时候调用 函数不调用,自己不会执行 同名函数会覆盖 ...

随机推荐

  1. Spring boot 导出Excel

    Html页面: window.location.href="adjectfkController/exportTemplate?adjOrg="+ adjOrg +"&a ...

  2. 201621123001 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 通过IP地址和端口号可以进行建立Socket对象,然后进行通信 使用Socket的一般步骤: 建立Sock ...

  3. spoon 更新数据

    一个小需求,被要求使用spoon 来同步数据 主要流程为: 1.查询A库未同步数据 id 2.根据步骤1查到的id,作为条件更新B库数据 3.更新B库数据成功则更改库A中的数据状态为已同步. 4.添加 ...

  4. Final阶段第1周/共1周 Scrum立会报告+燃尽图 07

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2486] 版本控制:https://git.coding.net/liuyy08 ...

  5. day 29 socket 理论

    网络编程(socket,套接字)   服务端地址不变 ip + mac 标识唯一一台机器 ip +端口 标识唯一客户端应用程序 套接字: 网络编程   网络编程 一.python提供了两个级别访问的网 ...

  6. day 26面向对象 的封装 接口 抽象

    大纲分析 # 面向对象# 类 :一类具有相同属性和方法的事物 #类的定义:class #类中可以定义的方法种类: #普通方法 self 对象 #类方法 cls @classmethod 类/对象 #静 ...

  7. 一种基于SDR实现的被动GSM嗅探

    软件定义无线电(SDR)是一种无线电通信系统,简单来说,就是通过数字信号处理技术在通用可编程数字信号处理硬件平台上,利用软件定义来实现无线电台的各单元功能,从而对无线电信号进行调制.解调.测量.SDR ...

  8. mysql关系型和非关系型区别

    关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织优点:1.易于维护:都是使用表结构,格式一致:2.使用方便:SQL语言通用,可用于复杂查询:3.复杂操作:支持SQL,可用于 ...

  9. Window下部署Maven Nexus

    Nexus下载地址:https://www.sonatype.com/download-oss-sonatype 选择相应的版本下载后,本人下载的是nexus-2.12.0-01-bundle.zip ...

  10. 跨交换机划分vlan配置

    实验要求:使两台交换机上同一vlan的主机能够通信,不同vlan的主机不能通信 拓扑如下: 涉及内容有: 1.vlan的创建和划分 2.端口trunk模式的设置 配置如下: Switch1 enabl ...