P8241 [COCI2013-2014#3] RIJEČI 题解
基础思路
先来看点显然的。
我们设
经过一次变换,
只有
变换的次数并不多,于是可以
code:
#include <cstdio>
int main()
{
int n, a = 1, b = 0, t;scanf("%d", &n);
while(n--) t = a, a = b, b += t;
return printf("%d %d", a, b), 0;
}
进阶亿点
我们发现题目中
纯递推,自然想到矩阵快速幂优化。设经过
推一下转移矩阵:
#include <cstdio>
#include <cstring>
#define F(i) for(int i = 0;i < 2;++i)
struct S{int a[2][2];S() {memset(a, 0, sizeof a);}S operator*(S b);}b, s;
S S::operator*(S b) {S c;F(k) F(i) F(j) c.a[i][j] += a[i][k] * b.a[k][j];return c;}
signed main()
{
int n;scanf("%d", &n);
s.a[0][0] = b.a[0][1] = b.a[1][0] = b.a[1][1] = 1;
for(;n;n >>= 1) {if(n & 1) s = s * b;b = b * b;}
return printf("%d %d", s.a[0][0], s.a[0][1]), 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具