洛谷 P1307 数字反转

时间限制 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);
原文地址:https://www.cnblogs.com/Potrem/p/LuoguP1307.html