题目描述
给定一个整数 N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。
输入格式
一个整数 N。
输出格式
一个整数,表示反转后的新数。
输入输出样例
输入 #1
123
输出 #1
321
输入 #2
-380
输出 #2
-83
说明/提示
【数据范围】
−1,000,000,000≤N≤1,000,000,000。
解
#include<iostream>
#include<cstring>
using namespace std;
long long s[11] = {}, n, k = 0, a = 1;
int main()
{
memset(s, 0, sizeof(n));//清零
cin >> n;
for (int i = 1; i <= 10; i++)s[i] = n / a % 10, a *= 10;
a = 1e9;
for (int i = 1; i <= 10; i++)k += s[i] * a, a /= 10;
while (k % 10 == 0)k /= 10;
cout << k;
return 0;
}
更简单的方法
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n, ans = 0; cin >> n;
while (n)
{
ans = ans * 10 + n % 10;
n /= 10;
}
cout << ans;
return 0;
}