您的位置:首页 > 其它

【codevs 1130】数字反转

2016-09-28 23:05 204 查看
1130 数字反转 2011年NOIP全国联赛普及组

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 白银 Silver

题解

题目描述 Description

给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形

式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零.

输入描述 Input Description

输入共 1 行,一个整数N

输出描述 Output Description

输出共 1 行,一个整数,表示反转后的新数。

样例输入 Sample Input

-380

样例输出 Sample Output

-83

数据范围及提示 Data Size & Hint

数据范围

-1,000,000,000 ≤ N≤ 1,000,000,000

用字符串或者字符数组输入 倒着输出就好了

记得判断最高位是不是‘0’

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 25;
char num[MAXN];
int k = 0;

int main()
{
cin >> num;
int lens = strlen(num);
if(num[0] == '-')//如果是个负数
{
cout << num[0];
k = 1;
}
else
k = 0;
lens --;
while(lens >= k)
//如果负数的话 数是从‘-’的下一位开始的 正数比负数早一位
{
if(num[lens] == '0')
lens --;
else
break;
}
if(lens + 1 == 0)//如果你就是个0 就直接输出吧
{
puts("0");
return 0;
}
for(int i = lens; i >= k; i --)
cout << num[i];
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: