A+B Again? 的题解


记住只在没有思路时使用题解,不要从它复制粘贴代码。请尊重题目和题解的作者。
在解题之前提交题解的代码会导致封禁。

作者: admin

概述

本题要求计算一个两位正整数的十位数字与个位数字之和。核心解法是直接对该整数进行整除和取模运算得到两个数字并相加。

分析
核心观察

对于两位正整数 n,其十位数字为 \lfloor n/10 \rfloor,个位数字为 n \bmod 10,二者之和即为所求。

思路

读取整数 n,通过整数除法得到十位,通过取模得到个位,两者相加输出。由于 n 的范围为 10 到 99,结果在 1 到 18 之间。

具体示例

以样例第一组 n=77:十位 7,个位 7,和为 14。
第二组 n=21:十位 2,个位 1,和为 3。

算法步骤
  1. 读入测试用例数 t。
  2. 对每个测试用例,读入整数 n。
  3. 计算十位 tens = n / 10,个位 ones = n % 10。
  4. 输出 tens + ones。
复杂度分析
  • 时间:O(t),每个测试用例常数时间。
  • 空间:O(1)。
实现注意事项
  • 输入保证为两位正整数,无需处理边界异常。
  • 可用字符串方式读取并转换字符,但整数运算更简洁。
  • 快速输入输出可提高效率。
源代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        cout << (n / 10) + (n % 10) << '\n';
    }
    return 0;
}
import sys

def solve():
    data = sys.stdin.read().strip().split()
    if not data:
        return
    t = int(data[0])
    out = []
    for i in range(1, t + 1):
        n = int(data[i])
        out.append(str(n // 10 + n % 10))
    sys.stdout.write("\n".join(out))

if __name__ == "__main__":
    solve()

评论

目前没有评论。