【洛谷 P1307】[NOIP2011 普及组] 数字反转 题解(取余)

该文介绍了NOIP2011普及组的一道编程题,要求反转一个整数的数字顺序。文中给出的解决方案是针对负数和正数,通过取余操作逐位反转,而不是使用字符串转换。代码示例使用C++编写,实现了高效地反转整数的功能。
摘要由CSDN通过智能技术生成

[NOIP2011 普及组] 数字反转

题目描述

给定一个整数 N N N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。

输入格式

一个整数 N N N

输出格式

一个整数,表示反转后的新数。

样例 #1

样例输入 #1

123

样例输出 #1

321

样例 #2

样例输入 #2

-380

样例输出 #2

-83

提示

【数据范围】

$-1,000,000,000\leq N\leq 1,000,000,000 $。

noip2011 普及组第一题

思路

负数输出符号,通过取余求每一位来倒序输出,这样做比字符串法更简洁。

AC代码

#include <iostream>
#define AUTHOR "HEX9CF"
using namespace std;

int main() {
    int n;
    int r;
    cin >> n;
    if(n < 0){
        putchar('-');
        n *= -1;
    }
    r = n % 10;
    for (int i = n, m = 10; i > 9; i /= 10)
    {
        r = r * 10 + (n % (10 * m) - n % m) / m;
        m *= 10;
    }
    cout << r << endl;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值