小z 学会了斐波那契和 gcd 后,老师又给他出了个难题,求第N个和第M个斐波那契数的最大公约数,这可难倒了小z ,不过在小z 的再三请求下,老师又告诉他了个条件,gcd(N,M)∈[1,90]。
可是,笨拙的小z 还是不会,于是请求你帮他解答这个问题。
输入格式:
输入包括 T 组,T∈[1,10].
接下来 T 行,每行两个整数 N,M, 表示斐波那契的第 N 项和第 M 项,(N,M∈[1,1018]).
输出格式:
输出包含 T 行,每行输出一个整数.
样例:
思路:根据范围小的去找范围大的,先进行打表
有一个公式:gcd(fn,fm)=f(gcd(n,m))
1 #include<iostream>
2 #include<iomanip>
3 #include<string.h>
4 #include<set>
5 #include<map>
6 #include<stdio.h>
7 #include<queue>
8 #define inf 0x3f3f3f3f
9 using namespace std;
10 typedef long long ll;
11
12 ll gcd(ll x,ll y)
13 {
14 if(y==0)
15 return x;
16 return gcd(y,x%y);
17 }
18
19 //ll f(ll x)//项数
20 //{
21 // if(x==0)
22 // return 0;
23 // if(x==1)
24 // return 1;
25 // else
26 // return f(x-1)+f(x-2);
27 //}
28 ll f[110];
29 void init()
30 {
31 f[0]=0;
32 f[1]=1;
33 for(int i=2;i<100;i++)
34 f[i]=f[i-1]+f[i-2];
35 }
36
37 int main()
38 {
39 std::ios::sync_with_stdio(false);
40 cin.tie(0);
41 cout.tie(0);
42 init();
43 int t;
44 long long n,m;
45 scanf("%d",&t);
46 while(t--)
47 {
48 scanf("%lld %lld",&n,&m);
49 cout<<f[gcd(n,m)]<<endl;
50 }
51 return 0;
52 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」