题解 | #23年OPPO-a的翻转#
23年OPPO-a的翻转
https://www.nowcoder.com/practice/dcce2d0cc8f740c29e0885df96c9d625
解题思路
给定一个数字a,将其翻转后得到数字b,然后计算a+b的值。
翻转数字可以通过不断取余和整除来实现。
代码
#include <iostream>
using namespace std;
int reverse(int n) {
int rev = 0;
while(n > 0) {
rev = rev * 10 + n % 10;
n /= 10;
}
return rev;
}
int solve(int a) {
int b = reverse(a);
return a + b;
}
int main() {
int a;
cin >> a;
int result = solve(a);
cout << result << endl;
return 0;
}
import java.util.Scanner;
public class Main {
public static int reverse(int n) {
int rev = 0;
while(n > 0) {
rev = rev * 10 + n % 10;
n /= 10;
}
return rev;
}
public static int solve(int a) {
int b = reverse(a);
return a + b;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int result = solve(a);
System.out.println(result);
sc.close();
}
}
def reverse(n):
rev = 0
while n > 0:
rev = rev * 10 + n % 10
n //= 10
return rev
def solve(a):
b = reverse(a)
return a + b
if __name__ == "__main__":
a = int(input())
result = solve(a)
print(result)
算法及复杂度
- 算法:模拟。通过数学运算实现数字的翻转,然后相加得到结果。
- 时间复杂度:,其中n是输入数字a的大小,因为需要遍历数字的每一位。
- 空间复杂度:,只使用了常数级别的额外空间。