noip2011普及组第一题
题目描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入输出格式
输入格式:
一个整数 NN
输出格式:
一个整数,表示反转后的新数。
输入输出样例
输入样例#1:
123
输出样例#1:
321
输入样例#2:
-380
输出样例#2:
-83
说明
数据范围
-1,000,000,000≤N≤1,000,000,000−1,000,000,000≤N≤1,000,000,000 。
循环写法
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int n,m=0,i,j,s=0,x,a[1001];
scanf("%d",&n);
if(n<0)
{
printf("-");
n=-n;
}
if(n==0)
printf("0");
while(n)
{
s++;
a[s]=n%10;
n=n/10;
}
x=s;
for(i=1;i<=s;i++)
{
for(j=x;j>1;j--)
a[i]=a[i]*10;
m=m+a[i];
x--;
}
printf("%d ",m);
return 0;
}
递归写法
#include<cstdio>
using namespace std;
long long a=0,b=0,m,n;
int fan(int m)
{
int s;
s=m%10;
if(m==0)
return b;
while(m)
{
a=m%10;
b=b*10+a%10;
return fan(m/10);
}
}
int main()
{
scanf("%d",&n);
printf("%d\n",fan(n));
return 0;
}