Spoj FIBOSUM - Fibonacci Sum 矩阵快速幂

1273 Fibonacci sequence sum 同样的历史遗留。 问有多少种方案可以把该数分解成若干彼此不同的斐波那契数之和。思路是参考vv的。做完这些,还有两道vv的 插头dp和背包。只能有缘机会在搞了。code :#include <iostream> #include <algorithm> #include <map> #include <vector> using namespace s... 阅读详情

题目链接:https://www.spoj.com/problems/FIBOSUM/
The fibonacci sequence is defined by the following relation:

  • F(0) = 0
  • F(1) = 1
  • F(N) = F(N - 1) + F(N - 2), N >= 2

Your task is very simple. Given two non-negative integers N and M, you have to calculate the sum (F(N) + F(N + 1) + … + F(M)) mod 1000000007.

Input

The first line contains an integer T (the number of test cases). Then, T lines follow. Each test case consists of a single line with two non-negative integers N and M.

Output

For each test case you have to output a single line containing the answer for the task.

Example
Input:

3
0 3
3 5
10 19

Output:

4
10
10857

Constraints

T <= 1000
0 <= N <= M <= 1 0 9 10^9 109

矩阵快速幂,递推公式如下:
A5MmIU.png
两个需要注意的地方:

  1. 注意边界值处理。
  2. 计算u到v之间的和时不是简单地计算Sum(v)-Sum(u-1),中间计算时有取模,这样计算出来的结果可能为负值,如果Sum(v) < Sum(u-1)结果应该为Sum(v)+MOD-Sum(u-1)。
#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
typedef vector<LL> vec;
typedef vector<vec> mat;

const LL MOD = 1000000007;

mat mul(mat &A,mat &B)
{
    mat C(A.size(),vec(B[0].size()));
    for(int i = 0; i < A.size(); i++){
    	for(int k = 0; k < B.size(); k++){
			if(A[i][k] != 0){
				for(int j = 0; j < B[0].size(); j++){
					C[i][j]= ((C[i][j] % MOD)  + (A[i][k] * B[k][j]) % MOD) % MOD;
				}
			}
		}
	}
    return C;
}


mat pow(mat A,LL n)
{
    mat B(A.size(),vec(A[0].size()));
    for(int i = 0;i < A.size(); i++)
    	B[i][i] = 1;
    while(n > 0){
		if(n & 1)
			B = mul(B,A);
            A = mul(A,A);
            n >>= 1;
        }
        return B;
}


int main(int argc, char const *argv[])
{
	LL arr[4][3] = {{0,1,0},{1,1,0},{1,1,1},{0,1,1}};
	vector<LL> temp(3);
	mat A,B;
	
	for(int i = 0;i < 3; i++){
		for(int j = 0;j < 3; j++) 
			temp[j] = arr[i][j];
		A.push_back(temp);
	}
	
	for(int i = 0;i < 3; i++){
		vector<LL> temp2;
		temp2.push_back(arr[3][i]);
		B.push_back(temp2);
	}
	
	map<int,LL> mp;
	int m,u,v;
	scanf("%d",&m);
	mp[-1] = 0;mp[0] = 0;mp[1] = 1;
	for(int i = 0;i < m; i++){
		scanf("%d%d",&u,&v);
		if(mp.count(u-1) == 0){
			mat powAns1 = pow(A,u-2);
			mp[u-1] = mul(powAns1,B)[2][0];
		}
		if(mp.count(v) == 0){
			mat powAns2 = pow(A,v-1);
			mp[v] = mul(powAns2,B)[2][0];
		}
		
		if(mp[v] > mp[u-1])
			cout << (mp[v] - mp[u-1]) % MOD << endl;
		else
			cout << (mp[v]+MOD - mp[u-1]) << endl;
	}
	
	return 0;
}


Modelica建模,Modelica语言的学习,技术调研工作 Modelica是由Modelica协会维护、免费开放的物理系统面向对象的统一建模语言规范,为机、电、液、控等多领域复杂工程系统提供了统一的物理建模语言规范。 Modelica作为多学科统一建模仿真的国际标准,被仿真界广泛采用,系统多领域统一建模仿真,已成为世界公认的MBSE和CPS的核心关键支持技术。 Modelica 语法、函数、包、连接器、组件、子系统 阅读详情

相关推荐

山东专升本计算机网络基础知识点 --- 计算机网络基础

计算机网络是指将一群具有独立\textcolor{WildStrawberry}{独立}独立功能的计算机通过通信设备及传输媒体等互联起来,在通信软件的支持下,实现计算机间资源共享、信息交换或协同工作\textcolor{WildStrawberry}{资源共享、信息交换或协同工作}资源共享、信息交换或协同工作的系统。计算机网络是计算机技术和通信技术紧密结合的产物\textcolor{WildStrawberry}{计算机网络是计算机技术和通信技术紧密结合的产物}

z339521的博客 2815

LeetCode //2648. Generate Fibonacci Sequence (Day 29 of LC JavaScript Challenage)

【代码】LeetCode //2648. Generate Fibonacci Sequence (Day 29 of LC JavaScript Challenage)

Made in Code 217

华为防火墙NAT避坑指南:当双ISP出口遇到服务器发布,这些细节不注意会翻车

本文深入解析华为防火墙在双ISP出口环境下服务器发布的实战配置,重点探讨no-reverse参数对Server-Map表的影响、源进源出功能的实现及线路切换时的会话保持问题。通过策略路由和智能选路技术,确保HTTP/FTP服务在多运营商链路中的高可用性,避免路径不对称和NAT映射冲突等常见陷阱。

weixin_30897233的博客 550

Fibonacci Sum(二项式求和)

这道题没写过类似的感觉确实不好想,考点在与二项式求和优化等式。特别是优化等式这里,是真的坑。 废话不多说,上推到过程: 因为: 可以有: 所以有二项式展开: 很明显竖起来是等比,所以这样就可以把复杂度变成klogn了; 然后可以得出公式S结果公式为: 由于需要mod1e9+9,所以可以由费马小定理可知变形为: qi的值和阶乘的值都可以预处理,但是你会发现如果直接带这个公式写出来就T了。这就是真的变态卡快速幂。。。。。。。。。 这是我超时的代码: #include<bits/stdc++.h.

qq_44555205的博客 2260

Mac上Office合法安装与激活全指南:2021/2024/M365区别解析

Office是微软办公套件的核心产品,其在macOS平台的部署逻辑与Windows截然不同——不依赖传统密钥激活,而是基于Microsoft账户与设备标识的云端绑定机制。理解这一原理,是解决‘无法验证开发者’‘打不开’‘功能受限’等常见问题的前提。Office 2021代表永久许可模型,Office 2024 LTSC面向企业离线场景,Microsoft 365则是持续订阅服务,三者在授权验证方式、更新策略与系统兼容性上存在本质差异。实际应用中,需结合macOS版本、芯片架构(Intel/Apple Sil

weixin_33491377的博客 1285

红外与可见光融合避坑指南:LLVIP数据集实测6大算法效果对比

本文基于专为弱光视觉设计的LLVIP数据集,对GTF、DenseFuse、FusionGAN、IFCNN等6种主流红外与可见光图像融合算法进行了深度实测与对比。通过客观指标与可视化分析,揭示了算法在极端弱光下易出现特征丢失的共性问题,并探讨了融合图像对下游目标检测任务的实际增益,为工程选型与算法调优提供了实用指南。

weixin_29092031的博客 439

SPOJ - FIBOSUM Fibonacci Sum(递推公式/矩阵快速幂)

传送门 解法一 找规律不难发现斐波那契数列的前缀和和斐波那契数列有直接的联系,也就是s(n)=f(n+2)−1s(n)=f(n+2)-1s(n)=f(n+2)−1,这个可以通过数学归纳法证明或者通过斐波那契数列的公式f(n)=15[(1+52)n−(1−52)n]f(n)=\frac{1}{\sqrt{5}}[(\frac{1+\sqrt{5}}{2})^n-(\frac{1-\sqrt{5}}{2})^n]f(n)=5​1​[(21+5​​)n−(21−5​​)n],然后考虑等比数列求和公式 code:

Happig的博客 318

512分辨率万能遮罩模型实战指南:从下载到高精度应用

本文提供了512分辨率万能遮罩模型的完整实战指南。该模型经过超过540万次迭代,专门优化了对头发、手、眼睛等复杂区域的识别。文章详细介绍了从可靠渠道下载、环境部署、使用DF_ICE工具批量应用遮罩,到利用XSeg Editor进行高精度精修的全流程,旨在帮助用户显著提升AI换脸合成视频的质量与效率。

y2z3a4b5c的博客 1165

斐波那契数列(Fibonacci sequence)及相关问题介绍

本文主要介绍斐波那契数列(Fibonacci sequence)的相关知识,同时通过示例代码介绍相关问题的解决方法。

liitdar的博客 1026

2018南京大学计算机夏令营机试

1. Count number of binary strings without consecutive 1’s Given a positive integer n(3≤n≤90), count all possible distinct binary strings of length n such that there are no consecutive 1's . Examples...

climber16的博客 1万+

学习STM32的DS18B20温度传感器

该函数首先复位传感器,然后发送跳过ROM命令和转换命令,并等待转换完成。接下来,它再次复位传感器,发送跳过ROM命令和读取温度命令。最后,它读取温度值的最低字节和最高字节,并将其组合成16位温度值。传感器的VCC引脚连接到STM32的3.3V电源,GND引脚连接到GND,而数据引脚连接到任何一个IO引脚。需要注意的是,示例代码中使用了一个简单的延时函数来等待转换完成。实际上,您可能需要使用定时器或其他更精确的延时方法来实现更准确的延时。下面是一个示例代码,演示如何读取DS18B20传感器的温度值。

m0_75244442的博客 1182

[计算机程序设计C++] Fibonaci数列的递归与非递归算法实现

本文是针对西安交通大学C++慕课第三章编程练习的16题的一个讲解。 参考博客:https://blog.youkuaiyun.com/zombie_slicer/article/details/38871799

Rosemary_tu的博客 1485

图像处理 | 基于matlab的多尺度Retinex(MSR)和自适应直方图均衡化(CLAHE)算法联合的低照度图像增强(附代码)

本文介绍了一种基于多尺度Retinex(MSR)和CLAHE的低照度图像增强算法。算法首先对图像进行多尺度Retinex处理,通过不同尺度的高斯核去除光照影响;然后采用CLAHE算法进行对比度增强。Matlab实现展示了算法流程,包含灰度转换、多尺度Retinex增强和CLAHE处理。实验结果显示,该方法能有效提升低照度图像的可见性,增强细节表现。最后提出了改进建议,包括引入深度学习方法和优化参数选择。

尘世冰封的专栏 952

SPOJ31428 FIBONOMIAL(斐波那契数列)

神鱼推题,必是好题。 前几天刚做过[BJOI2019]勘破神机,于是就会这题了。(BJ人民强啊……%鱼) 首先要求是 $$\sum\limits_{i=0}^nx^if_i$$ 应该很明显能想到把 $f_i$ 写成通项公式。 $$f_i=\dfrac{1}{\sqrt{5}}((\dfrac{1+\sqrt{5}}{2})^i-(\dfrac{1-\sqrt{5}}{2})^i)$$ ...

weixin_30852367的博客 115

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

欧拉计划25

The Fibonacci sequence is defined by the recurrence relation: Fn= Fn−1+ Fn−2, where F1= 1 and F2= 1. Hence the first 12 terms will be: F1= 1 F2= 1 F3= 2 F4= 3 F5= 5 F6= 8 F7= 13 F8= 21 ...

qq_37807889的博客 285

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Codility经典算法题之三十三:FibFrog

Task Description:The Fibonacci sequence is defined using the following recursive formula: F(0) = 0 F(1) = 1 F(M) = F(M - 1) + F(M - 2) if M &gt;= 2A small frog wants to get to the other side ...

数据库 1039

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

HDU - 6755 Fibonacci Sum【Fibonacci数列的幂和】

### [题目链接](http://acm.hdu.edu.cn/showproblem.php?pid=6755) - 题意:给定 $N,C,K$,求$({F_{0}}^K+{F_{C}}^K+{F_{2C}}^K+...+{F_{NC}}^K) \ mod\ 1e9+9$,其中$F_i$是 $Fibonacci$ 数列的第 $i$ 项。 --- ##### 思路: 三个前置知识: 1. $Fibonacci$ 数列的通项公式:$F_n=\frac{1}{\sqrt{5}}[(\frac{1+\sqr

L_X_ 370

HDU - 6755 Fibonacci Sum(斐波那契+二次剩余+二项式定理)

传送门 对于斐波那契问题,一般想到的解法是递推或者矩阵快速幂,但是本题数据非常之大,怎么做都超时,临时想了一下斐波那契的公式,觉得这个浮点误差很大没法写,实际上可以写但是要用到很多知识,本题的总结收获不少(唯一难受的是代码优化能做的都做了自己写的还是超时) 首先给出斐波那契数列的公式: F(n)=15[(1+52)n−(1−52)n]F(n)=\frac{1}{\sqrt{5}}[(\frac{1+\sqrt{5}}{2})^n-(\frac{1-\sqrt{5}}{2})^n]F(n)=5​1​[(21

Happig的博客 509

HDU6755.Fibonacci Sum

HDU6755.Fibonacci Sum(二次剩余) 思路:fibnaccifibnaccifibnacci二次剩余转等比数列求和。 由fibonaccifibonaccifibonacci公式:Fn=15×[(5+12)n−(5−12)n]F_n=\dfrac{1}{\sqrt{5}}\times [(\dfrac{\sqrt{5}+1}{2})^n-(\dfrac{\sqrt{5}-1}{2})^n]Fn​=5​1​×[(25​+1​)n−(25​−1​)n] 令a=(5+12)n,b=(5−12)n

Harris-H的博客 795

415. Add Strings

题目 Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2. Note: The length of both num1 and num2 is Both num1 and num2 contains only digits

hongxiuzhe 503

HDU 6755 Fibonacci Sum (二项式定理+预处理) 2020杭电多校第一场

原题题面 The Fibonacci numbers are defined as below: F0=0,F1=1F_0=0,F_1=1F0​=0,F1​=1 Fn=Fn−2+Fn−1(n>1)F_n=F_{n-2}+F_{n-1}(n>1)Fn​=Fn−2​+Fn−1​(n>1) Given three integers NNN, CCC and KKK, calculate the following summation: (F0)K+(FC)K+(F2C)K+(F3C)K...+(

因为一无所有,所以拥有无限可能。 1670

LightOJ 1294 - Positive Negative Sign (规律)

1294 - Positive Negative Sign Description Given two integers: n and m and n is divisible by 2m, you have to write down the first n natural numbers in the following form. At first take first

滴水穿石,慢慢积累,总会有成果 551

SPOJ FIBOSUM && FIBOSUM2

Fibonacci数列定义为 $$f_n = f_{n-1}+f_{n-2}, \text{以及初值}f_0=0, f_1=1.$$ 本文之讨论,皆在模$10^9+7$意义下。 FIBOSUM 给定$0 \le x \le y \le 10^9$,求$\sum_{i=x}^y f_i$。 解: 令$s_n = \sum_{i=1}^n f_i$,则 $$\begin{bmatr...

weixin_30438813的博客 146

streams - Fibonacci sequence sum

Stream.iterate() starts with a seed (the first argument) and passes it to the method (the second argument). The result is added to the stream and also stored for use as the first argument the next tim...

wangbingfengf98的专栏 229

hdu6755 Fibonacci Sum(二项式定理)

题目链接:点击这里 题目大意: 给定正整数 n,c,kn,c,kn,c,k 求: ∑i=0nF(ic)kmod  1e9+9\sum_{i=0}^nF(ic)^k \mod 1e9+9i=0∑n​F(ic)kmod1e9+9 其中 F(i)F(i)F(i) 为斐波那契数列的第 iii 项 题目分析: 我们知道斐波那契数列的通项如下: F(n)=15((1+52)n−(1−52)n)F(n) = \frac 1 {\sqrt 5}((\frac{1+\sqrt5} 2)^n-(\frac {1-\sqrt 5

羊驼的博客 318

欧拉计划 第二十五题

The Fibonacci sequence is defined by the recurrence relation:Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.Hence the first 12 terms will be:F1 = 1F2 = 1F3 = 2F4 = 3F5 = 5F6 = 8F7 = 13F8 = 21F9 = 34F10 = 5...

qq_38362049的博客 349
上一篇: Spoj ASSIGN - Assignments dp+bitmasking
下一篇: centos 使用xshell实现远程服务器和本地文件传输
philpanic9
博客等级 码龄9年 44粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值