• Educational Codeforces Round 39 (Rated for Div. 2) B. Weird Subtraction Process[数论/欧几里得算法]


    https://zh.wikipedia.org/wiki/%E8%BC%BE%E8%BD%89%E7%9B%B8%E9%99%A4%E6%B3%95

    取模也是一样的,就当多减几次.

    在欧几里得最初的描述中,商和余数是通过连续的减法来计算的,即从rk−2中不断减去rk−1直到小于rk−1。一个更高效的做法是使用整数除法和模除来计算商和余数:

    rk rk−2 mod rk−1
    在欧几里得定义的减法版本,取余运算被减法替换
    while (b!=0)
    {
    if (a>b)  a=a-b;
    else  b=b-a;
    }
    
    //结果是a 
    

    B. Weird Subtraction Process
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    You have two variables a and b. Consider the following sequence of actions performed with these variables:

    1. If a = 0 or b = 0, end the process. Otherwise, go to step 2;
    2. If a ≥ 2·b, then set the value of a to a - 2·b, and repeat step 1. Otherwise, go to step 3;
    3. If b ≥ 2·a, then set the value of b to b - 2·a, and repeat step 1. Otherwise, end the process.

    Initially the values of a and b are positive integers, and so the process will be finite.

    You have to determine the values of a and b after the process ends.

    Input

    The only line of the input contains two integers n and m (1 ≤ n, m ≤ 1018). n is the initial value of variable a, and m is the initial value of variable b.

    Output

    Print two integers — the values of a and b after the end of the process.

    Examples
    input
    Copy
    12 5
    output
    0 1
    input
    Copy
    31 12
    output
    7 12
    Note

    Explanations to the samples:

    1. a = 12, b = 5  a = 2, b = 5  a = 2, b = 1  a = 0, b = 1;
    2. a = 31, b = 12  a = 7, b = 12.
     
     


  • 相关阅读:
    高并发系统中的常见问题
    区块链需要解决诸多问题
    什么是“区块链”技术
    github源码开源区块链浏览器
    JavaScript 内存
    行为驱动开发(BDD)
    Vue.js
    Net程序员学习Linux
    Mybatis数据操作
    Metatable和Metamethod(转)
  • 原文地址:https://www.cnblogs.com/Roni-i/p/8530283.html
Copyright © 2020-2023  润新知