• AtCoder Grand Contest 008 A


    Problem Statement

    Snuke has a calculator. It has a display and two buttons.

    Initially, the display shows an integer x. Snuke wants to change this value into another integer y, by pressing the following two buttons some number of times in arbitrary order:

    • Button A: When pressed, the value on the display is incremented by 1.
    • Button B: When pressed, the sign of the value on the display is reversed.

    Find the minimum number of times Snuke needs to press the buttons to achieve his objective. It can be shown that the objective is always achievable regardless of the values of the integers x and y.

    Constraints

    • x and y are integers.
    • |x|,|y|≤109
    • x and y are different.

    Input

    The input is given from Standard Input in the following format:

    x y
    

    Output

    Print the minimum number of times Snuke needs to press the buttons to achieve his objective.


    Sample Input 1

    Copy
    10 20
    

    Sample Output 1

    Copy
    10
    

    Press button A ten times.


    Sample Input 2

    Copy
    10 -10
    

    Sample Output 2

    Copy
    1
    

    Press button B once.


    Sample Input 3

    Copy
    -10 -20
    

    Sample Output 3

    Copy
    12
    

    Press the buttons as follows:

    • Press button B once.
    • Press button A ten times.
    • Press button B once.                     

    题意:告诉我们两个数字,两种操作,一种是+1,一种是改变正负,问最小进行几次操作可以将x变成y

    解法:讨论讨论讨论。。。。(注意等于0的情况)

    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    int main()
    {
        ll n,m;
        cin>>n>>m;
    //   cout<<min(abs(m-n),min(abs(-1*n-m)+1,min(abs(-1*n+m)+1,min(abs(-1*n+m)+2,abs(-1*n-m)+2))))<<endl;
       // if(n==m) continue;
       // cout<<n<<" "<<m<<" ";
          if(n<m)
                {
                    ll pos=n*(-1);
                    if(n>=0&&m>=0)
                    {
                        //3 5
                        cout<<m-n<<endl;
                    }
                    else if(n<=0&&m>=0)
                    {
                        //-3 5
                        //3 5
                        //-3 2
                        //-3+1=-2 2
                        if(pos<=m)
                        {
                            if(n!=0)
                            {
                                cout<<m-pos+1<<endl;
                            }
                            else
                            {
                                cout<<m-pos<<endl;
                            }
                        }
                        else
                        {
                            // cout<<"A"<<endl;
                            //ll ans=pos-m;
                            if(m==0)
                            {
                                cout<<pos<<endl;
                            }
                            else
                                cout<<pos-m+1<<endl;
                        }
                    }
                    else if(n<=0&&m<=0)
                    {
                        //-3 -2
                        cout<<pos+m<<endl;
                    }
                }
                else
                {
                    if(n>=0&&m>=0)
                    {
                        //4 2
                        if(m!=0)
                        {
                            cout<<n-m+2<<endl;
                        }
                        else
                        {
                            cout<<n+m+1<<endl;
                        }
                    }
                    else if(n>=0&&m<=0)
                    {
                        ll pos=-1*m;
                        if(n==0)
                        {
                            cout<<-1*m+1<<endl;
                        }
                        else
                        {
                            if(n<=pos)
                            {
                                cout<<pos-n+1<<endl;
                            }
                            else
                            {
                                cout<<n+m+1<<endl;
                            }
                        }
                    }
                    else
                    {
                        if(n==0)
                        {
                            cout<<(-1)*m+1<<endl;
                        }
                        else
                        {
                            cout<<(-1)*m-(-1)*n+2<<endl;
                        }
                    }
                }
        return 0;
    }
  • 相关阅读:
    Spring Boot Common application properties(转载)
    SVN中trunk,branches,tags用法详解(转载)
    约定优于配置
    JavaScript封装一个MyAlert弹出框
    JavaScript封装一个实用的select控件
    JavaScript的8行代码搞定js文件引入问题
    JavaScript处理数据完成左侧二级菜单的搭建
    SpringMVC+Mybatis实现的Mysql分页数据查询
    十步完全理解 SQL(转载)
    sql语句练习50题
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/6220911.html
Copyright © 2020-2023  润新知