您的位置:首页 > 其它

QDU 18 反转数字

2016-08-31 22:54 176 查看
反转数字

发布时间: 2015年10月3日 21:07 时间限制: 100ms 内存限制: 256M

描述

输入一个 c 语言 4字节 int 范围内的数字,输出它反转后的数字。比如12345反转后是54321,-12345反转后是-54321。如果反转后的数字不在 int 范围内就输出0;

输入

每行一个 int 范围内的数字,以 EOF 结尾。

输出

输出反转后的数字,每行一个

样例输入1

12345

-12345

样例输出1

54321

-54321

思路:

将数字以字符串输入,然后字符串逐个取位转换为数字再乘以倍数

注意:

pow函数会有误差,所以要手写!

(看了凯神博客知道的,厉害的人真的都是努力的,最近真的太懒了

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
long long max_;
long long pow(int n)
{
long long res=1;
for(int i=0;i<n;i++)
{
res*=10;
}
return res;
}
int main()
{
max_=1;
for(int i=0;i<31;i++)
{
max_*=2;
}
max_=max_-1;
long long min_=-1*max_;
char str[20];
while(scanf("%s",str)!=EOF)
{
int flag=0;
if(str[0]=='-')
{
flag=1;
}
int len=strlen(str);
long long sum=0;
if(flag==0)
{
for(int i=len-1;i>=0;i--)
{
long long  n;
n=str[i]-'0';
sum+=n*(pow(i));
}
}
else
{
for(int i=len-1;i>0;i--)
{
long long n=str[i]-'0';
sum+=n*(pow(i-1));
}
}
if(sum>max_||sum<-1*max_)
{
printf("0\n");
}
else if(flag==0)
printf("%lld\n",sum);
else if(flag==1)
printf("-%lld\n",sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: