• A Plus Equals B


    Problem:

    A + B is a problem used to test one's basic knowledge for competitive programming. Here is yet another boring variation of it.

    You have two integers, A and B. You want to make them equal. To do so, you can perform several steps, where each step is one of the following:

    • A+=A
    • A+=B
    • B+=A
    • B+=B

    Unfortunately, A + B is a hard problem for us, so you are allowed to make at most 5000 steps.

    Input

    Two integers A, B are given. (1 ≤ A, B ≤ 1018).

    Output

    In the first line, print a single integer n (0 ≤ n ≤ 5000) denoting the number of steps.

    In next n lines, print one of the following strings to denote your desired operation: "A+=A", "A+=B", "B+=A", or "B+=B".

    Any sequence of steps that yields the desired result will be judged correct.

    Example

    Input

    2 3

    Output

    4
    B+=B
    B+=A
    A+=A
    A+=A

        #include <iostream>
        #include <vector>
        using namespace std;
        #define int long long
        int a , b;
        vector < int > s;
        signed main ( void )
        {
            cin >> a >> b;
            while ( a != b ) {
                while ( a % 2 == 0 ) {
                    s.push_back ( 1 );
                    a /= 2;
                }
                while ( b % 2 == 0 ) {
                    s.push_back ( 2 );
                    b /= 2;
                }
                if ( a == b ) break;
                if ( a < b ) {
                    b += a;
                    s.push_back ( 3 );
                } else {
                    a += b;
                    s.push_back ( 4 );
                }
            }
            cout << s.size ( ) << endl;
            for ( int i = 0 ; i < s.size ( ) ; i++ ) {
                if ( s [ i ] == 1 ) {
                    cout << "B+=B" << endl;
                } else if ( s [ i ] == 2 ) {
                    cout << "A+=A" << endl;
                } else if ( s [ i ] == 3 ) {
                    cout << "B+=A" << endl;
                } else {
                    cout << "A+=B" << endl;
                }
            }
            return 0;
        }
    

      

  • 相关阅读:
    Oracle 归档模式
    如果在安装32位Oracle客户端组件的情况下64位模式运行, 将出现此问题.
    ORA-00972: 标识符过长
    Oracle SQL%ROWCOUNT
    ASP.NET Core 中间件的几种实现方式
    Python 闭包
    Python 迭代器
    Python 正则表达式提高
    Python正则表达式
    Python 生成器
  • 原文地址:https://www.cnblogs.com/jaszzz/p/12715961.html
Copyright © 2020-2023  润新知