九韶杯-斐波拉契
作者:互联网
题目描述
小明最近痴迷于斐波那契数列(1,1,2,3,5……),但是最近他又有了新的奇思妙想,就是对于斐波那契数列的相邻的两个数相乘取倒数然后将每一项进行相加,由于小明只喜欢思考不喜欢动手,所以现在他想让你帮他算下这样一个新的数列的前13项的和为多少?(结果用分数表示,且保留最简分数)输入描述:
无
输出描述:
无
备注:
例如前三项:1/(1*1)+1/(1*2)+1/(2*3)=5/3
解析;
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; typedef long long ll; const int N=31; ll f[N]; ll fm[N],fz[N]; //求最大公约数函数 int gcd(ll a,ll b) { if(b==0) return a; else return gcd(b,a%b); } int main() { f[1]=1; f[2]=1; //求斐波拉契数列 for(int i=3;i<16;i++) { f[i]=f[i-1]+f[i-2]; } //求新生成数列的分母 for(int i=1;i<=13;i++) { fz[i]=1; fm[i]=f[i]*f[i+1]; } //a为分母,b为分子 ll a=1,b=0; //求分母 for(int i=1;i<=14;i++) { a*=f[i]; } //求分子 for(int i=1;i<=13;i++) { b+=a/fm[i]; } ll d=gcd(a,b); a/=d; b/=d; cout<<b<<"/"<<a; return 0; }
标签:return,数列,int,ll,波拉,long,九韶杯,include 来源: https://www.cnblogs.com/chen-kaige/p/14645218.html