21356_又是欧几里德

2022-5-16 18:19| 发布者: Hocassian| 查看: 32| 评论: 0|原作者: 肇庆学院ACM合集

摘要:
C:\Users\Administrator\Downloads\2019-10-12-10-14-4-89505189631399-Problem List-采集的数据-后羿采集器.html

Pro.ID

21356

Title

又是欧几里德

Title链接

http://10.20.2.8/oj/exercise/problem?problem_id=21356

AC

13

Submit

53

Ratio

24.53%

时间&空间限制

  • Time Limit: 1000/500 MS (Java/Others)     Memory Limit: 131072/65536 K (Java/Others)
  • 描述

    欧几里德算法是求最大公约数(GCD)的效率很高。下面是其算法的C语言代码:

    long gcd( long x, long y )  // 假设 x≥y 且 x>0
    {
       if ( !y )  return x;
       return  gcd( y, x%y );
    }

    给出两个整数x和y,上面这个gcd函数会被调用多少次?下面的代码能够解决这个问题:

    long f ( long x, long y )  // 假设 x≥y 且 x>0
    {
       if ( !y )  return 1;
       else   return f( y, x%y ) + 1;
    }

    现在让我们来定义一个新函数 g(k) :

    g( k ) = min{ x | f(x,y)=k,  x≥y, x>0, y≥0 }

    你的任务就是高效地算出 g( k )

    输入

    第一行是一个正整数C,表示测试用例的个数。

    每个测试用是一个整数k

    0 < k < 81

    输出

    Description

    欧几里德算法是求最大公约数(GCD)的效率很高。下面是其算法的C语言代码:

    long gcd( long x, long y )  // 假设 x≥y 且 x>0
    {
       if ( !y )  return x;
       return  gcd( y, x%y );
    }

    给出两个整数x和y,上面这个gcd函数会被调用多少次?下面的代码能够解决这个问题:

    long f ( long x, long y )  // 假设 x≥y 且 x>0
    {
       if ( !y )  return 1;
       else   return f( y, x%y ) + 1;
    }

    现在让我们来定义一个新函数 g(k) :

    g( k ) = min{ x | f(x,y)=k,  x≥y, x>0, y≥0 }

    你的任务就是高效地算出 g( k )

    Input

    第一行是一个正整数C,表示测试用例的个数。

    每个测试用是一个整数k

    0 < k < 81

    Output

    输出C行,每行对应一个测试用例的结果:一个整数,表示g(k) 的值。

    Sample Input

    1
    1

    Sample Output

    1

    Author

    样例输入

    1
    1

    样例输出

    1

    提示

    作者


    路过

    雷人

    握手

    鲜花

    鸡蛋

    最新评论

    返回顶部