问题标题: KDT:请问酷町堂1726这道题我哪里做错了?

0
0
已解决
周琪岳
周琪岳
资深光能
资深光能

https://ke.codingtang.com/#/problem/problemSub?id=1726

这是我的代码,请问哪里错了?

#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
#include <algorithm>
#include <fstream>

using namespace std;
int x, y, ans;

int main() {
    //freopen("文件名.in","r",stdin);
    //freopen("文件名.out","w",stdout);
    cin >> x >> y;
    int k = 1;
    bool b = true, s = false;
    while (true) {
        if (b) {
            int cnt_1 = 0;
            for (int i = x; i <= x+k; i++) {
                ans++;
                cnt_1++;
                if (i == y) {
                    cout << ans;
                    return 0;
                }
            }
            k = k* 2;
            b = false;
            s = true;
            ans += cnt_1;
        }
        if (s) {
            int cnt_2 = 0;
            for (int i = x; i>=x-k;i--) {
                ans++;
                cnt_2++;
                if (i == y) {
                    cout << ans;
                    return 0;
                }
            }
            k = k * 2;
            b = true;
            s = false;
            ans += cnt_2;
        }
    }
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

 


1
已采纳
张天璨
张天璨
新手天翼
新手天翼

我也不知道,

但我可以把我的代码发一下:

    int x=0,y=0,a,b,ans=0;
    cin>>a>>b;
    while(1)
    {
        if(x!=0)
        {
            x*=2;
            x=-x;
        }
        else
        {
            x=1;
        }
        if(b>=a&&b<=a+x||b>=a+x&&b<=a)//如果达到了
        {
            ans+=abs(b-a);
            break;
        }
        else
        {
            ans+=abs(x)*2;
        }
    }
    cout<<ans;
    return 0;

望采纳。

0
0
0
黄子扬
黄子扬
初级天翼
初级天翼

写的啥呀,一个while结束好叭

0
我要回答