2011NOIP普及组真题 1. 数字反转

线上OJ:

一本通:http://ybt.ssoier.cn:8088/problem_show.php?pid=1953

核心思想:

本题可以直接对字符串 处理,也可以 直接对 int 进行处理

int的范围是 -2,147,483,648 到 2,147,483,647,正好覆盖题中的 -1,000,000,000 ≤ N≤ 1,000,000,000

字符串处理方法

1、如果是0,直接输出0

2、如果是负数,先把负号输出,然后把剩余的字符串翻转

3、反转可使用 reverse(s.begin()+i, s.end()) , i 表示从第 i 位到末尾进行取反

4、输出时采用 substr(i, len-i) 表示从字符串第 i 位开始输出,输出长度为 len-i

题解代码:
cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

string s;
int len;

void prt(int i) // i:从s[i]开始翻转
{
    reverse(s.begin() + i, s.end()); // 从第 i 位到末尾进行取反

    while(s[i] == '0')  i++;  // 跳过取反后的前导 0

    cout << s.substr(i, len-i); // 从第i位开始输出,输出长度为 len - i
}

// 字符串方法
int main()
{
    cin >> s;
    len = s.size();
    if( s == "0" )  cout << '0'; // 如果是0,直接输出0
    else
    {
        if( s[0] == '-' )  // 如果是负数
        {
            cout << '-';   // 先输出负号
            prt(1);        // ,然后从 s[1]开始翻转
        }
        else  prt(0); // 否则,就直接从 s[0]开始翻转
    }

    return 0;
}
对 int 的处理方法

1、先处理负号

2、数字反向采用的方法与读入字符转成数字的方法类似,只是字符不是读入,而是自己 求余 获得

题解代码:
cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int n, ans = 0;

int main()
{
    cin >> n;
    if(n < 0)
    {
        cout << '-';
        n = -n;
    }

    while(n)  // 类似读入字符"123"时将其转化为数字123的处理方法。只是字符不是读入,而是自己求余获得
    {
        ans = ans * 10 + n % 10;
        n /= 10;
    }
    cout << ans << endl;
    return 0;
}
相关推荐
薛定e的猫咪几秒前
(AISTATS 2023)BaCaDI:未知干预下的贝叶斯因果发现
人工智能·深度学习·算法·机器学习
ebiobiz8 分钟前
Zig 嵌入式底层库选择与 build.zig 组织指南
c语言·c++·嵌入式硬件·mcu
漂流瓶jz1 小时前
UVA-11491 奖品的价值 题解答案代码 算法竞赛入门经典第二版
c++·算法·图论·题解·aoapc·算法竞赛入门经典·uva
weixin_307779135 小时前
C++代码实现MATLAB中的dlarray函数功能
开发语言·c++·算法·matlab
Frank_refuel9 小时前
C++11之一场名为“搬家”的 C++ 之旅
开发语言·c++
hetao173383711 小时前
2026-10-03~04 hetao1733837 的刷题记录
c++·算法
Zootopia62611 小时前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信
longlongzihan11 小时前
从LeetCode 70. 爬楼梯看动态规划:如何精准推导状态转移方程?
c++·算法·leetcode·动态规划
2601_9603563812 小时前
2027校招采购岗解析:数学基础如何迁移到需求预测、成本与供应商分析
人工智能·算法
h_a_o777oah13 小时前
【树论】树链剖分:将树形结构转化为线性结构以处理树上路径问题(洛谷 P3384 附C++代码模板)
数据结构·算法·线段树·acm·树链剖分·树论·重链剖分