c语言Fibonacci数列分数求和
Fibonacci数列大家已经熟悉F[1]=1F[2]=1F[n]=F[n-1]+F[n-2](n>2)有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...
Fibonacci数列大家已经熟悉F[1]=1 F[2]=1 F[n] = F[n-1]+F[n-2] (n>2)
有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13,....
该分数序列的通项为 A[n] = F[n+2] / F[n+1]
求出这个数列的前n项之和。n <= 13
Input
输入数据量t表示下面有t组数据
每组数据有一个正整数n
Output
对于每组数据输出序列总和,格式见sample
要求化成最简形式 即分母分子最大公约数为 1
Sample Input
2
1
2
Sample Output
2/1
7/2
结果要用分数表示~最简分数~~ 展开
有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13,....
该分数序列的通项为 A[n] = F[n+2] / F[n+1]
求出这个数列的前n项之和。n <= 13
Input
输入数据量t表示下面有t组数据
每组数据有一个正整数n
Output
对于每组数据输出序列总和,格式见sample
要求化成最简形式 即分母分子最大公约数为 1
Sample Input
2
1
2
Sample Output
2/1
7/2
结果要用分数表示~最简分数~~ 展开
展开全部
#include<stdio.h>
long long int nume, deno;
long long int prime(long long int bigger,long long int smaller)
{
if (smaller == 1) return 1;
if (smaller == 0) return bigger;
return prime(smaller, bigger%smaller);
}
void CalcA(int n)
{
int a = 1, b=1;
int i;
nume = 0;
deno = 1;
for (i=0; i< n; ++i)
{
if (a > b)
{
b += a;
nume *= a;
nume += deno*b;
deno *=a ;
} else
{
a += b;
nume *= b;
nume += deno*a;
deno *= b;
}
}
}
int main()
{
int n[1024] = {0};
int t;
int i;
long long int p;
scanf("%d", &t);
for (i=0; i<t; ++i)
{
scanf("%d", &n[i]);
}
for (i=0; n[i]>0; ++i)
{
CalcA(n[i]);
p = prime(nume, deno);
if (p>1) {nume /=p ; deno /= p;}
printf("%lld/%lld\n", nume, deno);
}
}
long long int nume, deno;
long long int prime(long long int bigger,long long int smaller)
{
if (smaller == 1) return 1;
if (smaller == 0) return bigger;
return prime(smaller, bigger%smaller);
}
void CalcA(int n)
{
int a = 1, b=1;
int i;
nume = 0;
deno = 1;
for (i=0; i< n; ++i)
{
if (a > b)
{
b += a;
nume *= a;
nume += deno*b;
deno *=a ;
} else
{
a += b;
nume *= b;
nume += deno*a;
deno *= b;
}
}
}
int main()
{
int n[1024] = {0};
int t;
int i;
long long int p;
scanf("%d", &t);
for (i=0; i<t; ++i)
{
scanf("%d", &n[i]);
}
for (i=0; n[i]>0; ++i)
{
CalcA(n[i]);
p = prime(nume, deno);
if (p>1) {nume /=p ; deno /= p;}
printf("%lld/%lld\n", nume, deno);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void main()
{
__int64 t,a,b,f1,f2,i,k,r,m,s;
char c='/';
scanf("%I64d",&t);
f1=1;f2=1;a=0;b=1;
for(i=1;i<=t;i++)
{
f1=f1+f2;
a=a*f2+b*f1;
b=f2*b;
k=f2;
f2=f1;
f1=k;
m=a;r=b;
while(r!=0)
{
s=m%r;m=r;r=s;
}
a=a/m;
b=b/m;
printf("%I64d%c%I64d\n",a,c,b);
}
}
void main()
{
__int64 t,a,b,f1,f2,i,k,r,m,s;
char c='/';
scanf("%I64d",&t);
f1=1;f2=1;a=0;b=1;
for(i=1;i<=t;i++)
{
f1=f1+f2;
a=a*f2+b*f1;
b=f2*b;
k=f2;
f2=f1;
f1=k;
m=a;r=b;
while(r!=0)
{
s=m%r;m=r;r=s;
}
a=a/m;
b=b/m;
printf("%I64d%c%I64d\n",a,c,b);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |