1 条题解
-
0
题意分析
题目要求处理数字的反转操作:
- 输入两个已经反转过的数字(如对应原数字)
- 将它们反转回原始形式后相加
- 将和再次反转输出
关键点:
- 反转时要去除前导零(如反转为)
- 保证输出结果不含前导零
解题思路
- 反转函数设计:
- 通过不断取模和整除来反转数字
- 自动处理前导零问题(如)
- 计算流程:
- 读取输入的反转数字
- 反转两次得到原始数值
- 相加后再反转结果
实现步骤
- 实现
reverse()
函数:while(n>0){ j = j*10 + n%10; n /= 10; }
- 主程序逻辑:
- 读取测试用例数量
- 对每组数据:
- 读取两个数字
- 反转得到原始值
reverse(a)
- 计算和
sum = reverse(a)+reverse(b)
- 反转和并输出
reverse(sum)
C++实现
#include<stdio.h> // 数字反转函数(自动处理前导零) int reverse(int n) { int j = 0; while(n > 0) { j = j * 10 + n % 10; n /= 10; } return j; } int main() { int n, a, b; scanf("%d", &n); while(n--) { scanf("%d%d", &a, &b); // 关键步骤:双重反转相当于原始值 printf("%d\n", reverse(reverse(a) + reverse(b))); } return 0; }
代码说明
- reverse函数:
n%10
获取最后一位j*10
实现数字左移- 循环终止时自动丢弃前导零
- 输入输出:
- 使用
scanf
读取和每组数据 - 通过函数嵌套调用
reverse(reverse(a)+reverse(b))
完成核心计算
- 使用
- 时间复杂度:,其中为数字位数
示例分析:
输入24 1
时:- (反转)
- (反转)
- (输出)
- 1
信息
- ID
- 505
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者