“九韶杯”[斐波那契] 最大公约数和最小公倍数
作者:互联网
斐波那契
题目
链接:牛客网
小明最近痴迷于斐波那契数列(1,1,2,3,5……),但是最近他又有了新的奇思妙想,就是对于斐波那契数列的相邻的两个数相乘取倒数然后将每一项进行相加,由于小明只喜欢思考不喜欢动手,所以现在他想让你帮他算下这样一个新的数列的前13项的和为多少?(结果用分数表示,且保留最简分数)
分析
我也真是醉了啊,就差那么一点,377在稿纸上写在了下一行,压根就没看见,所以数组就没赋值进去,要不然就对了啊!!!!!!
斐波那契
f[1] = 1;
f[2] = 1;
for (int i = 3; i <= 15; ++i)
f[i] = f[i - 1] + f[i - 2];
代码
#include<iostream>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b)
{
return b?gcd(b,a%b):a;
}
int main()
{
int f[55]={1,1,2,3,5,8,13,21,34,55,89,144,233,377};
ll a,b,c,d;
ll max,min;
a=3;b=2;
for(int i=2;i<13;i++)
{
c=1;
d=f[i]*f[i+1];
min=(b*d)/gcd(b,d);
a=a*(min/b)+c*(min/d);
b=min;
max=gcd(a,b);
a=a/max;
b=b/max;
//cout<<a<<" "<<b<<endl;
}
printf("%lld/%lld",a,b);
return 0;
}
标签:gcd,min,公倍数,ll,九韶杯,斐波,int,那契 来源: https://blog.csdn.net/weixin_52138829/article/details/115606008