<OJ_Sicily>数字反转

原创 2016年06月06日 12:40:03

Description

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

Input

输入共 1 行,一个整数N。

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

Output

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


解题思路:对于数字输入,采用字符数组输入的方式进行输入,将输入存入到一个字符数组里面,当第一个字符为“-”说明这是一个负数,否则为整数。先对字符数组进行遍历到数字的个位,然后从后往前寻找第一个不为0 的数(也就是排除开头为0的情况),然后从该数开始逐个输出,最后判断第一位是否为符号位,如果是符号位则不需要输出(因为符号位是第一个输出的),如果是数字则直接输出。

#include <iostream>
#include <stack>
using namespace std;
int main(int argc, const char * argv[]) {
    // insert code here...
    char inStr[12];
    int i = 0;
    bool isNegative = false;   // 标识是否为负数
    cin >> inStr;
    if (inStr[0] == '-') {     // 若为负数,isNegative = true;
        isNegative = true;
    }
    while (inStr[i] != '\0') {  // 先遍历到数字结尾
        i++;
    }
    
    while (inStr[i-1] == '0') {  // 从结尾开始返回到第一个不为0的数
        i--;
    }
    if (isNegative) {           // 若为负数,先输出负号
        cout << "-" ;
    }
    for (int j = i-1; j > 0; j--) {  // 逐个输出数字
        cout << inStr[j];
    }
    if (!isNegative) {          // 若为负数说明第一个为符号位,不用输出
        cout << inStr[0] << endl;
    }
    else cout << endl;          // 若不为负数,说明第一个为数字位,需要输出
    return 0;
}


NOIP 数字反转

#include using namespace std; int main() { int n,m=0; cin>>n; while(n!=0) { m=m*10+n%10; n/...
  • zzh19991228
  • zzh19991228
  • 2015年11月06日 22:10
  • 365

HP-UX下Oracle RAC扩展 增加lv的方法

HP的服务器操作lv相当的麻烦,所以在建立oracle rac的数据库时就要规划好全部的lv,否则的话就只能停了节点来做了。   1. 扩展lv的步骤 可以通过cmviewcl命令查看clus...
  • hxf0759
  • hxf0759
  • 2011年10月26日 09:51
  • 2489

数字反转(升级版)

题目来源:洛谷 http://www.luogu.org/problem/show?pid=1553 题目:给定一个数,请将该数各个位上数字反转得到一个新数。 这次与NOIp2011普及...
  • a1033025319
  • a1033025319
  • 2015年07月24日 22:57
  • 726

【简单】数字翻转

对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如: 如果 X = 123,则rev(X) = 321; 如果 X = 100,则rev(X) = 1. 现在给出整...
  • qq_27255871
  • qq_27255871
  • 2017年03月22日 19:37
  • 154

数字反转

 package chapter2; public class RevertNumber {     public static void main(String[] args){  ...
  • xiaohanshenchu
  • xiaohanshenchu
  • 2015年08月26日 16:24
  • 778

NOIP 数字反转

#include using namespace std; int main() { int n,m=0; cin>>n; while(n!=0) { m=m*10+n%10; n/...
  • zzh19991228
  • zzh19991228
  • 2015年11月06日 22:10
  • 365

数字反转(升级版)

题目描述 给定一个数,请将该数各个位上数字反转得到一个新数。 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反...
  • wzw1376124061
  • wzw1376124061
  • 2016年07月12日 08:27
  • 280

数字反转(升级版)

题目来源:洛谷 http://www.luogu.org/problem/show?pid=1553 题目:给定一个数,请将该数各个位上数字反转得到一个新数。 这次与NOIp2011普及...
  • a1033025319
  • a1033025319
  • 2015年07月24日 22:57
  • 726

陈利人 面试题 对于一个n位正整数a,去掉其中任意k(k<=n)个数字后,剩下的数字按原次序排列可以组成一个新的正整数。设计一个删数算法,使得剩下的数字组成的正整数最小。

题目 对于一个n位正整数a,去掉其中任意k(k 分析 一个n位数,删去k位后,也就是剩下一个 n-k位 数,那么这个数要最小,我们就要保证我们我们得出的数是所有删除后得到的数的最小值。那么怎么保证呢...
  • cqs_2012
  • cqs_2012
  • 2013年11月27日 00:30
  • 4672

/*C++任意输入一个整数,再把它的各位数字重新组合一个新的整数,使其值最大*/

/*C++任意输入一个整数,再把它的各位数字重新组合一个新的整数,使其值最大*/...
  • xianfajushi
  • xianfajushi
  • 2014年08月02日 08:42
  • 2916
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:<OJ_Sicily>数字反转
举报原因:
原因补充:

(最多只允许输入30个字)