P5705 【深基2.例7】数字反转
发布人:shili8
发布时间:2025-02-08 06:27
阅读次数:0
**数字反转**
在计算机科学中,数字反转是指将一个数字的位数颠倒过来。例如,将123 反转后变成321。
**问题描述**
给定一个非负整数,要求输出其数字的反转结果。
**解决方案**
### 方法一:使用字符串我们可以先将数字转换为字符串,然后使用反转函数(如 `reverse()` 或 `split()` 和 `join()`)来颠倒字符串中的字符。最后,将得到的字符串转换回整数。
def reverse_num(n): # 将数字转换为字符串 str_n = str(n) # 使用反转函数颠倒字符串中的字符 reversed_str_n = str_n[::-1] # 将得到的字符串转换回整数 reversed_n = int(reversed_str_n) return reversed_n# 测试print(reverse_num(123)) # 输出:321
### 方法二:使用数学运算我们可以使用数学运算来实现数字反转。具体来说,我们可以将数字除以10 的幂(如10^1、10^2 等),取余数作为个位数,然后将商的个位数乘以10^n,取余数作为十位数。
def reverse_num_math(n): # 将数字转换为字符串 str_n = str(n) # 反转数字 reversed_str_n = '' for i in range(len(str_n) -1, -1, -1): reversed_str_n += str_n[i] # 将得到的字符串转换回整数 reversed_n = int(reversed_str_n) return reversed_n# 测试print(reverse_num_math(123)) # 输出:321
### 方法三:使用循环我们可以使用循环来实现数字反转。具体来说,我们可以将数字除以10 的幂(如10^1、10^2 等),取余数作为个位数,然后将商的个位数乘以10^n,取余数作为十位数。
def reverse_num_loop(n): # 反转数字 reversed_n =0 while n >0: # 取余数作为个位数 digit = n %10 # 将余数乘以10^n,取余数作为十位数 reversed_n = reversed_n *10 + digit # 将商除以10^1 n //=10 return reversed_n# 测试print(reverse_num_loop(123)) # 输出:321
**总结**
数字反转是计算机科学中一个基本的概念。我们可以使用字符串、数学运算或循环来实现数字反转。每种方法都有其优缺点,选择哪种方法取决于具体需求和性能要求。
**参考资料**
* 《算法导论》第2 版* 《计算机科学概论》第3 版