总时间限制: 1000ms 内存限制: 65536kB
描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入
输入共 1 行,一个整数N。
-1,000,000,000 ≤ N≤ 1,000,000,000。
输出
输出共 1 行,一个整数,表示反转后的新数。
样例输入
样例 #1:
123
样例 #2:
-380
样例输出
样例 #1:
321
样例 #2:
-83
#include<iostream>
#include<math.h>
#include<stdio.h>
#include<string.h>
using namespace std;
int main(){
long long a,s=0;
char b[12000];
char c[10000];
char r[10000];//如何定义空字符串
scanf("%lld",&a);
if(a>0){
sprintf(b,"%lld",a);
int k = strlen(b);
// char c[k];//如何定义空字符串
for(int i=k-1;i>=0;i--){
if(b[i]=='0') //用单引号表示0字符
s=s+1;
else
break;
}
//printf("%d",s);
for(int j=0;j<k;j++)
{
c[j] =b[k-1-j];
}
if(s!=0){
char r[k-s];
for(int l=0;l<k-s;l++)
{
r[l]=c[s+l];
}
printf("%s",r);
}
else
printf("%s",c);
}
else if(a==0)
{
printf("%lld",0);
}
else{
a = -a;
sprintf(b,"%lld",a);
int k = strlen(b);
// char c[k];//如何定义空字符串
for(int i=k-1;i>=0;i--){
if(b[i]=='0') //用单引号表示0字符
s=s+1;
else
break;
}
//printf("%d",s);
for(int j=0;j<k;j++)
{
c[j] =b[k-1-j];
}
if(s!=0){
char r[k-s];
for(int l=0;l<k-s;l++)
{
r[l]=c[s+l];
}
printf("-%s",r);
}
else{
printf("-%s",c);
}
}
return 0;
}