码迷,mamicode.com
首页 > 其他好文 > 详细

1236: 数的逆转

时间:2018-09-10 20:34:41      阅读:355      评论:0      收藏:0      [点我收藏+]

标签:mes   bre   for   out   就是   main   它的   int   没有   

题目描述

Birdfly是一位优秀的acmer,他自幼都数学有着浓烈的兴趣。作为一名集训队员,总爱思考一些新奇的问题,寻求不同的解题方法。
Birdfly一直坚信freshmen的潜力是无穷的!因为你们是ZZULI ACM的未来!ACM的题目并不是那么简单,但这一题so easy!^_^
一天晚上,birdfly躺在床上毫无睡意……他想,任意给你一个整数,这个数可能很大(最长不超过100位),你能求出它的逆转数吗?
逆转数定义如下:
1.一个末尾没有0的整数,它的逆转数就是各位数字逆序输出;
2.一个负数的逆转数仍是负数;
3.一个末尾有0的整数,它的逆转数如同下例:reverse (1200) = 2100。
看着birdfly难以入睡,我只好求助于聪明的你编程实现这个问题,相信你一定能帮上忙的!

 

输入

输入数组有多组, 每组测试实例包含一个大数且占一行。

 

输出

对每组测试实例,输出它的逆转数。每组占一行。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
using namespace std;
/*
不得不说这道题浪费我很多时间,主要是基础不够熟练。


/************************思路如下:
/************************先讨论末尾是否有零
/************************if(有0),讨论正负;
/************************if(没0),亦论正负;
*/
void fun(string &s)
{
        int t = s.length()-1;
        if (s[t] != 0)
        {
            if (s[0] != -)
            {
                reverse(s.begin(), s.end());
            }
            else
            {
                reverse(s.begin() + 1, s.end());
            }
        }
        if (s[t] == 0)
        {
            int i,j=0;
            for (i = t; i >= 0; i--)//找到从后往前第一个不为0的数
            {
                j++;
                if (s[i] != 0)
                    break;
            }
            if (s[0] != -)
            {
                reverse(s.begin(), s.end()-j+1);
            }
            else
            {
                reverse(s.begin() + 1, s.end()-j+1);
            }
        }
}
int main()
{
    string s;
    while (cin>>s)
    {
        fun(s);
        cout<<s<<endl;
    }
    //system("pause");
    return 0;
}

 

 

 

1236: 数的逆转

标签:mes   bre   for   out   就是   main   它的   int   没有   

原文地址:https://www.cnblogs.com/binanry/p/9622520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!