笔试题

对一个八位数有三种操作: 加一、减一、反转 。 至少多少次操作可以把一个八位数A变成八位数B。
反转是指总体反转
yayaya

#include<bits/stdc++.h>
using namespace std;
const int N = 6e5 + 5;

void get(int a[], int v) {
    int cnt = 0;
    while(v) {
        a[++cnt] = v%10;
        v /= 10;
    }
    reverse(a + 1, a + cnt + 1);
}

int a[15], b[15];

int main()
{

    #ifndef ONLINE_JUDGE
    freopen("b.txt", "r", stdin);
    #endif // ONLINE_JUDGE


    int A, B;
    scanf("%d %d", &A, &B);
    get(a, A); get(b, B);

    int a1 = 0, a2 = 0, b1 = 0, b2 = 0;
    for(int i = 4; i >= 1; i--) a1 = a1 * 10 + a[i];
    for(int i = 4; i >= 1; i--) b1 = b1 * 10 + b[i];
    for(int i = 5; i <= 8; i++) a2 = a2 * 10 + a[i];
    for(int i = 5; i <= 8; i++) b2 = b2 * 10 + b[i];

//    cout << a1 << " " << a2 << "\n";
//    cout << b1 << " " << b2 << "\n";

    int ans1 = abs(b1-a2) + abs(a1-b2) + 1;
    int ans2 = abs(a1-b1) + abs(a2-b2) + 2;
    if(a1 == b1) ans2 = abs(a2-b2);

    printf("%d\n", min(ans1, ans2));

    return 0;
}
全部评论

相关推荐

10-30 10:16
南京大学 Java
永远的鹅孝子:给南大✌️跪了
点赞 评论 收藏
分享
11-27 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
评论
2
收藏
分享
牛客网
牛客企业服务