斐波那契数列的生成 %1e8 后的结果
方法一 用数组开,一般开到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 后的结果的更多相关文章
- Android NDK入门实例 计算斐波那契数列一生成jni头文件
最近要用到Android NDK,调用本地代码.就学了下Android NDK,顺便与大家分享.下面以一个具体的实例计算斐波那契数列,说明如何利用Android NDK,调用本地代码.以及比较本地代码 ...
- Android NDK入门实例 计算斐波那契数列二生成.so库文件
上一篇文章输生成了jni头文件,里面包含了本地C代码的信息,提供我们引用的C头文件.下面实现本地代码,再用ndk-build编译生成.so库文件.由于编译时要用到make和gcc,这里很多人是通过安装 ...
- 斐波拉契数列(Fibonacci)--用生成器生成数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&qu ...
- Python基础(二):斐波那契数列、模拟cp操作、生成8位随机密码
一.斐波那契数列 目标: 编写fib.py脚本,主要要求如下: 输出具有10个数字的斐波那契数列 使用for循环和range函数完成 改进程序,要求用户输入一个数字,可以生成用户需要长度的斐波那契数列 ...
- JavaScript生成斐波那契数列
常规写法 https://cn.bing.com/search?q=js+fibonacci+sequence&pc=MOZI&form=MOZSBR //Fibonacci func ...
- 斐波那契数列 yield 和list 生成
def fab_demo4(max): a,n,b = 0,0,1 while n < max: yield b # 生成器走到这一步返回b,需要再次调用才能继续执行 a,b = b,a+b n ...
- Python(迭代器 生成器 装饰器 递归 斐波那契数列)
1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...
- 求斐波那契数列的第n项
问题描述:斐波那契数列是这样的一个数列,1,1,2,3,5,8,..,即前两项都是1,后面每一项都是其前面两项的和. 现在要你求出该数列的第n项. 分析:该问题是一个经典的数列问题,相信大家在很多语言 ...
- javascript . 03 函数定义、函数参数(形参、实参)、函数的返回值、冒泡函数、函数的加载、局部变量与全局变量、隐式全局变量、JS预解析、是否是质数、斐波那契数列
1.1 知识点 函数:就是可以重复执行的代码块 2. 组成:参数,功能,返回值 为什么要用函数,因为一部分代码使用次数会很多,所以封装起来, 需要的时候调用 函数不调用,自己不会执行 同名函数会覆盖 ...
随机推荐
- go中for循环使用多个变量避坑
go for循环语法为: for expression1, expression2, expression3 { // ... } 使用多个变量时,使用平行赋值,需要留意的是expression3处的 ...
- CSS多div放一行
HTML代码 <body> <div class="right"></div> <div class="left"&g ...
- macOS Sierra 如何打开任何来源
1.打开应用程序-实用工具-终端: 2.复制以下代码(红色处注意是两个-)到终端中,回车(输入电脑密码): sudo spctl --master-disable 3.打开应用程序-系统偏好设置-安全 ...
- SQL-21 查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序
题目描述 查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序CREATE TABLE `employees` (`emp_no` ...
- windows下安装cygwin及配置(转)
reference:https://cygwin.com/install.html 对比:MinGW vs. CygWin https://www.cnblogs.com/findumars/p ...
- kubenetes pv(nfs) pvc 搭建
1:nfs-server的搭建. install the NFS Server: sudo apt install nfs-kernel-server 2:配置server. vim /etc/exp ...
- Oracle学习(四)_SQL函数
--第一部分:SQL基础 --ch1 简单查询 --ch2 查询基本概念 --ch3 数据过滤 --第二部分:多表操作 --ch4 集合理论 --ch5 内连接 --ch6 外连接 --ch7 子查询 ...
- JavaWeb:动作标识
动作标识 一.包含文件标识<jsp:include> 1.介绍 用于向当前页面中包含其他文件.被包含的文件可以是动态文件,也可以是静态文件 2.语法格式 <jsp:include p ...
- 2010年腾讯前端面试题学习(js部分)
看了牛人写的回忆文章,里面有2010年腾讯的前端面试题,里面涉及到不少基础性的问题,学习一下:) 原文地址:https://segmentfault.com/a/1190000012998107 js ...
- python基础题型一
一.执行Python脚本的两种方式 #python name.py Python解析器 #chmod +x name.py 二.简述位.字节的关系 1Byte=8bit 三.简述ascii.uni ...