( 数论专题 )【 斐波那契通项公式 + 等比数列求和公式 】

斐波那契通项公式( 证明略 ):

例题:

求当n趋向于无穷大,Sn等于什么,输出最简分数。

分子是斐波那契数列,分母是K的 i 次方, K是给定的。

思路:

代码:

#include <bits/stdc++.h>
#define int long longusing namespace std;signed main()
{int T;cin>>T;while ( T-- ) {int k;cin>>k;int up=k,down=k*k-k-1;int gcd = __gcd(up,down);up/=gcd;down/=gcd;if ( down==1 ) cout << up << endl;else cout << up << "/" << down << endl;}return 0;
}

2020 Multi-University Training Contest 1

Fibonacci Sum

将斐波那契的通项公式带入需要求的式子,再根据二项式定理展开

这样就根据等比公式就可以得到通式,枚举i=0~k相加就是答案。

还有一个问题是a和b不是整数,所以没法在乘法中取模。

这就需要用到二项同余求解

求得x = 383008016, 因为x也可以等于所以在%mod的条件下也可以等于383008016

( 这里提一句,比赛时写二项同余代码太费时间,可以直接暴力求,lst = [ i for i in range(1,mod) if i*i%mod==5 ] , 不到一分钟就能跑出来,类比到其他的情况也可以 )

A = (1+x)*inv(2)%mod          B = (1-x)*inv(2)%mod+mod

注意:等比公式可能出现分母为0的情况,显然会出错,需要特判。

注意:需要优化,否则超时。

化简出来的和等于

观察随着 i 的变化tmp的变化,容易发现 i 增加 1 tmp乘以B除以A。

所以就省去了很多个快速幂,直接手动维护tmp的值就可以了。

代码:

#include<bits/stdc++.h>
#define int long longusing namespace std;
const int mod = 1000000009;
int a[100005],b[100005];int qpow( int a, int n )
{int re = 1;while ( n ) {if ( n&1 ) re=(re*a)%mod;a=(a*a)%mod;n>>=1;}return re;
}int C( int n, int m )
{if ( n<m ) return 0;int ans = ((a[n]*b[m])%mod*b[n-m])%mod;return ans;
}int inv( int x )
{return qpow(x,mod-2);
}signed main()
{
//    cout << qpow(3,128900) << endl;
//    cout << qpow(3,128900%mod) << endl;// x^2 = 5%(1e9+9)
//    int x = 383008016;
//    cout << (1+x)*inv(2)%mod << endl;
//    cout << (1-x)*inv(2)%mod+mod << endl;int A=691504013,B=308495997;a[0]=a[1]=1;for ( int i=2; i<=100003; i++ ) a[i]=(a[i-1]*i)%mod;for ( int i=0; i<=100003; i++ ) b[i]=qpow(a[i],mod-2);int n,c,k,T;cin>>T;while ( T-- ) {scanf("%lld %lld %lld",&n,&c,&k);int ac = qpow(A,c);int bc = qpow(B,c);int bei = bc*inv(ac)%mod;int Bei = qpow(bei,n);int tmp = qpow(ac,k);int Tmp = qpow(tmp,n);int sum = 0,now;for ( int i=0; i<=k; i++ ) {if ( tmp==1 ) now = C(k,i)*(n%mod)%mod;else now = C(k,i)*tmp%mod*(Tmp-1)%mod*inv(tmp-1)%mod;if ( i%2==0 ) sum = (sum+now)%mod;else {sum = (sum-now)%mod;if ( sum<0 ) sum+=mod;}tmp = tmp*bei%mod;Tmp = Tmp*Bei%mod;}sum *= inv( qpow(383008016,k) );sum %= mod;if ( sum<0 ) sum+=mod;printf("%lld\n",sum);}return 0;
}

( 数论专题 )【 斐波那契通项公式 + 等比数列求和公式 】相关推荐

  1. 【HDU -1568】 Fibonacci(斐波那契通项公式+取对数)

    Fibonacci Problem Description 2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]=0,f[1] ...

  2. HDU-A Fibonacci sequence斐波那契数列-大数求和

    问题及代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:Fibonacci.cpp *作 者:单昕昕 *完成日期 ...

  3. [WC2021] 斐波那契——数论、斐波那契数列

    [WC2021] 斐波那契 题解 这里不得不向 Tiw 神下跪~ 一道黑题被他讲成一道蓝题难度 根本不会做的我瞬间感觉自己降智了好多 首先发现我们要解决的是满足这个式子: a f n − 1 + b ...

  4. 【数论】斐波那契数列求和公式

    斐波那契数列: F(n)=F(n-1)+F(n-2); 其中,      F1=1, F2=1. 斐波那契数列求和公式:          Sn  =     2F(n)  +  F(n-1) -  ...

  5. 斐波那契回调线怎么画_斐波那契回调线的口诀-斐波那契数列k线图解。

    斐波那契回调线 斐波那契数列的通项公式? 斐波那契数列的求和公式?有么 求教1.斐波那契回调线的高点和低点怎样确定比较好?在多大的一个区间内确定. 新人提问:您知道斐波那契回调线的正确方法吗? 选择股 ...

  6. 斐波那契数列通项公式的推导证明----举一反三

    斐波那契数列通项公式的推导证明----举一反三 1-前言 2-斐波那契 2-1-什么是斐波那契 2-2-通项公式的证明 2-3-举一反三 1-前言 2021年5月20号的那天,有对象的都忙着约会秀恩爱 ...

  7. 【算法】斐波那契数列通项公式

    特征方程和通项公式 如果数列ana_nan​的递推公式:an=c1an−1+c2an−2a_n=c_1a_{n-1}+c_2a_{n-2}an​=c1​an−1​+c2​an−2​------(1) ...

  8. 【小组专题三:斐波那契专题】斐波那契 与其20个性质 | 泽肯朵夫表示 | 卢卡斯数 与其8个性质 | 常系数二次线性齐次序列 | 模板与例题

    斐波那契专题 斐波那契序列的定义 斐波那契序列的基本性质 卢卡斯数 卢卡斯数的基本性质 正整数的泽肯朵夫(Zeckendorf)表示 其他斐波那契的性质 常系数的二次线性齐次递归关系 斐波那契进制/斐 ...

  9. C语言 计算斐波那契数列

    C语言 计算斐波那契数列 前言 在学习C语言的道路上多次遇到了求斐波那契数列的问题,今天来总结一下我所知道的几种思想方法. 方法一:循环 使用斐波那契数列的推导式,通过循环将每一个值保存到数组fib中 ...

最新文章

  1. jQuery 序列化表单数据 serialize() serializeArray()
  2. Android Gradle 自定义Task 详解
  3. [postgresql] postgresql 安装
  4. Windows-Qt-EclipseCDT 环境问题集
  5. 【Android-NCNN-Vulkan】ncnn-vulkan load param model 速度慢
  6. readdirectorychangesw 链接错误 undeclared identifier 解决方法
  7. 无限轮播图片的实现原理
  8. [六字真言]1.唵.遁入佛门之异常.md
  9. 在本地进行开发工作置chrome谷歌浏览器解决跨域问题
  10. react native android 通知栏
  11. Drozer的安装与使用 | Android逆向工具
  12. 分享一个通过项目管理师证书成功办理北京户口的励志经验
  13. 栈判断字符串是否为中心对称_数据结构 Stacks 栈
  14. mysql语句alter table_sql语句中ALTER TABLE MODIFY和ALTER TABLE CHANGE的区别?
  15. python和mysql匹配吗_python使用mysql
  16. Unity3d光影烘焙常见缺陷的解决方法【2020】
  17. 哈希(哈希表的应用)
  18. Android源码中的目录结构详解
  19. NVIDIA NeMo 简介——教程和示例
  20. linux命令:find、打包解包、vi编辑器、用户权限

热门文章

  1. 如何开发音游所用的节奏点编辑器
  2. java获取视频图片分辨率
  3. Equals与==的区别
  4. Javascript isNaN 与Number.isNaN
  5. Linux必会100个命令(三十一)scp
  6. LINQ to Entities
  7. 游戏陪玩源码开发,仿某看书app首页Banner轮播+背景渐变
  8. 谷粒商城项目学习笔记一
  9. 国内第三代半导体产业成为行业风口
  10. 一个人没有在30岁以前达成科学上的最大成就,那他永远都不会