题解:洛谷 P1307 [NOIP 2011 普及组] 数字反转
【题目来源】
洛谷:P1307 [NOIP 2011 普及组] 数字反转 - 洛谷 (luogu.com.cn)
【题目描述】
给定一个整数 \(N\),请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。
【输入】
一个整数 \(N\)。
【输出】
一个整数,表示反转后的新数。
【输入样例】
123
【输出样例】
321
【算法标签】
《洛谷 P1307 数字反转》 #模拟# #字符串# #NOIP普及组# #2011#
【代码详解】
#include <bits/stdc++.h> // 包含标准库头文件
using namespace std;
int main()
{
int n, s = 0, t; // n:输入整数, s:反转后的数, t:临时存储数字
bool mark = false; // 标记是否为负数
// 输入整数n
cin >> n;
// 处理负数情况
if (n < 0) {
mark = true; // 设置负数标记
n = -1 * n; // 转为正数处理
}
// 数字反转过程
while (n != 0) {
t = n % 10; // 获取最后一位数字
n /= 10; // 去掉最后一位
s = s * 10 + t; // 将数字添加到反转结果中
}
// 如果是负数,恢复负号
if (mark) {
s = -1 * s;
}
// 输出反转后的数字
cout << s;
return 0;
}
【运行结果】
-380
-83
浙公网安备 33010602011771号