时间限制 1.00s
内存限制 125.00MB
题目描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入格式
一个整数\(N\)
输出格式
一个整数,表示反转后的新数。
输入输出样例
输入 #1 | 输出 #1 |
---|---|
123 |
321 |
输入 #2 | 输出 #2 |
-380 |
-83 |
说明/提示
数据范围
\(−1,000,000,000≤N≤1,000,000,000\)
noip2011普及组第一题
PZ' solution
1.使用\(N \% 10\)每次取 \(N\) 的最后一位,用新的变量\(ans\)累加它;
2.即\(ans=ans*10+N \% 10\),其作用是 每次把取得的\(N\)的最后一位 变为\(ans\)的最后一位;
3.可以发现这种做法能巧妙地解决 前置零和中间零 的问题;
4.利用\(N=N/10\)将\(N\)的最后一位消去,直到\(N\)变为\(0\)为止;
ps.由于python负数取模的运算规则与其他语言略有不同,所以在python代码中取模时要判断\(N\)是否\(<0\);
P1307 C++ .cpp
#include<cstdio> //#include<stdio.h>
using namespace std;
int x,ans;
int main(){
scanf("%d",&x);
while(x!=0){
ans=ans*10+x%10;
x=x/10;
}
printf("%d",ans);
return 0;
}
P1307 Python.py
x=int(input());
res=0;
while x!=0:
if(x>0):
res=res*10+x%10;
else:
res=res*10-(-x)%10;
x=int(x/10);
print(res);