1 条题解

  • 0
    @ 2025-11-9 21:23:14

    这道题也算是签到题 能走2和3步意味着能走除1以外所有的步数 所以我们首先能想到如果两者步数相差2步和3步 就能先用 距离/3 再 距离%3 如果有余数 说明还要用2步 我们再在 距离/3 的基础上再+1就好 如果刚好整除那就直接输出 另外如果两者距离等于0 那么输出0 相信这些大家都能想到 但是如果距离为1呢? 题中表明可以随便移动 意味着我们其实可以先退2步 再进3步 来达成 前进1步 所以如果距离为1的特判不是-1 而是2 以下是代码

    #include <bits/stdc++.h>
    using namespace std;
    using ll = long long;
    const int N = 2e5 + 10;
    const int MOD = 1e9 + 7;
    const int MOD9 = 998244353;
    const int MOD5 = 5;
    const ll inf = 2e10 + 7;
    ll q, d, t, n, k, mod,x,y,r;
    string s;
    
    void solve()
    {
        cin>>x>>y;
        d=abs(x-y);
        if(d==0)
            cout<<0<<endl;
        else if(d==1)
            cout<<2<<endl;
        else if(d==2 || d==3)
            cout<<1<<endl;
        else
        {
            q=d/3;
            r=d%3;
            if(r==0)
                cout<<q<<endl;
            else
                cout<<q+1<<endl;
        }
        
    }
    
    int main()
    {
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	int tt;
    	tt = 1;
    	// cin >> tt;
    	while (tt--)
    		solve();
    	return 0;
    }
    

    超管留言:fw大王连代码块都不会用(¬‿¬)

    • 1

    信息

    ID
    1120
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    306
    已通过
    45
    上传者