题解:B4301 [蓝桥杯青少年组省赛 2024] 数字交换

· · 题解

题目简述

给定数字 n,要求交换 n 的最高位和最低位,并去除前导 0

主要思路

用数字交换 n 的最高位和最低位会比较麻烦,所以可以采用 string 来读入,这样用一个 swap 就可以完成交换。

对于去除前导 0,可以先将 n 翻转,不断判断 n 的末尾是否为 0,然后删去,直到末尾不为 0,再翻转回来即可。

AC Code

#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

int main() {
    string n; cin >> n;
    // ----------------------------
    swap(n[0], n.back());
    reverse(n.begin(), n.end());
    while (n.back() == '0') n.pop_back();
    reverse(n.begin(), n.end());
    // ----------------------------
    cout << n;
    return 0;
}