luogu 11月月赛 斐波那契数列
本来想作为水题刷,很快就想出了做法,结果细节实现太差改了好久。。。
根据题意你会发现其实就是求方程 ax+by=k解的个数。
此时 a=f[i],b=f[i+1],而(x,y)就是你要求的数对。
于是你就对斐波那契的每一项进行扩展欧几里得,然后计算个数,注意向上取整!!!
此时你把y转换为最大值应该是一个y≡n+a*t 而a可以为0,所以要加一。
#include<bits/stdc++.h>
using namespace std;
long long f[100];
void exgcd(long long a,long long b,long long &x,long long &y)
{
if(b==0)
{
x=1;y=0;return;
}
exgcd(b,a%b,x,y);
long long tmp=x;x=y;y=tmp-a/b*y;
}
const int mod=1e9+7;
int main()
{
long long k;
scanf("%lld",&k);
f[0]=0;f[1]=1;
for(int i=2;i<=46;++i)
{
f[i]=f[i-1]+f[i-2];
}
long long ans=0;
for(int i=1;i<=45;++i)
{
long long x,y,tmp=0;
exgcd(f[i],f[i+1],x,y);
x=x*k;y=y*k;
x=(x%f[i+1]+f[i+1])%f[i+1];
if(x==0)x=f[i+1];
y=(k-f[i]*x)/f[i+1];
if(y<0)continue;
ans=(ans+(y-1)/f[i]+1)%mod;
}
printf("%lld",ans);
return 0;
}
luogu 11月月赛 斐波那契数列的更多相关文章
- 「Luogu 1349」广义斐波那契数列
更好的阅读体验 Portal Portal1: Luogu Description 广义的斐波那契数列是指形如\(an=p \times a_{n-1}+q \times a_{n-2}\)的数列.今 ...
- Luogu 1349 广义斐波那契数列(递推,矩阵,快速幂)
Luogu 1349 广义斐波那契数列(递推,矩阵,快速幂) Description 广义的斐波那契数列是指形如\[A_n=p*a_{n-1}+q*a_{n-2}\]的数列.今给定数列的两系数p和q, ...
- Luogu 1962 斐波那契数列(矩阵,递推)
Luogu 1962 斐波那契数列(矩阵,递推) Description 大家都知道,斐波那契数列是满足如下性质的一个数列: f(1) = 1 f(2) = 1 f(n) = f(n-1) + f(n ...
- C++扬帆远航——11(斐波那契数列)
/* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:Feibo.cpp * 作者:常轩 * 微信公众号:Worldh ...
- [Luogu P3986] 斐波那契数列 (逆元)
题面 传送门:https://www.luogu.org/problemnew/show/P3986 Solution 这是一道很有意思的数论题. 首先,我们可以发现直接枚举a和b会T的起飞. 接下来 ...
- hihoCoder挑战赛11 A 随机斐波那契
算了前三项.....发现是个大水题... #include<stdio.h> int main() { int n; while (~scanf("%d", &am ...
- Luogu P1962 斐波那契数列(矩阵乘法模板)
传送门(其实就是求斐波那契数列....) 累了 明天再解释 做这道题需要一些关于矩阵乘法的基础知识. 1. 矩阵乘法的基础运算 只有当矩阵A的列数等于矩阵B的行数时,A与B可以相乘(A的行数不一定等于 ...
- [luogu P1962] 斐波那契数列(带快速幂矩阵乘法模板)
题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数) 题目描述 请 ...
- 纪中23日c组T3 2161. 【2017.7.11普及】围攻 斐波那契数列
2161. 围攻 (File IO): input:siege.in output:siege.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto Prob ...
随机推荐
- 【BZOJ】2049: [Sdoi2008]Cave 洞穴勘测 LCT
[题意]给定n个点和m个操作,每次操作:1.连接2个点.2.断开2个点.3.查询2个点是否连通.m<=2*10^5. [算法]Link-Cut Tree [题解]LCT模板题,Link,Cut, ...
- c++刷题(6/100)最长上升子序列
题目一:区间子数组个数 给定一个元素都是正整数的数组A ,正整数 L 以及 R (L <= R). 求连续.非空且其中最大元素满足大于等于L 小于等于R的子数组个数. 例如 : 输入: A = ...
- NYOJ 1073 最大值 (模拟)
题目链接 输入N个数,M次查询. 每次查询给出一个数x. 要求:每次查询输出前x个数中第i小的数.(i为第i次查询) 你可以假设M <= N,Xi <= Xi+1 <= Xi+2 & ...
- 牛客网习题剑指offer之数值的整数次方
分析: 要考虑到exponent为0和负数的情况. 如果base是0并且exponent是负数的时候呢?那就发生除0的情况了. AC代码: public class Solution { public ...
- python作业购物车(第二周)
一.作业需求: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4 ...
- three.js_ "Failed to execute 'texImage2D' on 'WebGLRenderingContext': tainted canvases may not be loded."
这个报错是请求图片跨域了. 1.当我们使用thee.js的时候肯定会碰到利用各种请求去向服务器请求贴图. 2.假设我们获取的是图片在服务器上的路径然后我们用 加载贴图到这里都是没有问题当我们在贴图加载 ...
- Linux下libevent安装与示例
http://www.cnblogs.com/kunhu/p/3632225.html
- 012 public等关键字可见性
public: 具有最大的访问权限,可以访问任何一个在classpath下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. protected: 主要的作用就是用来保护子 ...
- curl 发送请求的时候报错
AWS HTTP error: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see ...
- 一张图总结html5新特性