XTU 1329 连分式

题目描述

连分式是形如下面的分式,已知a,b和迭代的次数n,求连分式的值。

XTU 1329 连分式_第1张图片

输入

第一行是一个整数T(1≤T≤1000),表示样例的个数。 每行一个样例,为a,b,n(1≤a,b,n≤9)

输出

每行输出一个样例的结果,使用x/y分式表达,并保证x,y互质。

样例输入

3
1 2 1
1 2 9
5 9 9

样例输出

1/2
985/2378
321047030/611590599

思路:直接模拟,并且随时算分子与分母的最大公因数和最小公倍数,这种题目数据大得离谱,一定要用64位,另外,第一个分数就是a/b。

AC代码:

#include 
#include 

__int64 f(__int64 a,__int64 b)//求最大公因数
{
    while(a%b!=0)
    {
        __int64 c=b;
        b=a%b;
        a=c;
    }
    return b;
}
int main()
{
    int k;
    scanf("%d",&k);
    while(k--)
    {
        __int64 a,b,n,i;
        scanf("%I64d%I64d%I64d",&a,&b,&n);
        if(n==1)
        {
            __int64 c,d;
            c=a;
            d=b;
            a=a/f(c,d);
            b=b/f(c,d);
            printf("%I64d/%I64d\n",a,b);
            continue;
        }
        __int64 c=a,d=b;
        a=a/f(c,d),b=b/f(c,d);
        for(i=1;i

你可能感兴趣的:(算法,c语言)