题目链接

整数的十位

题目描述

给定一个整数 n,请计算该整数的十位数字。十位数字定义为 floor(|n| / 10) % 10

输入描述: 在一行中输入一个整数 n

输出描述: 输出一个整数,表示 n 的十位数字。

解题思路

本题要求提取一个整数的十位数字,是数字处理中的一个基本操作,可以看作是"提取个位"操作的延伸。

  1. 读取输入:从标准输入读取一个整数 n
  2. 取绝对值:根据题目要求,计算需要基于 n 的绝对值,所以先用 abs() 函数处理。
  3. 移除个位:通过对 |n| 进行整除 10 的操作(|n| / 10),可以有效地移除个位数字,并将十位数字移动到新的个位上。例如,|123| / 10 = 12
  4. 提取新个位:对上一步的结果再进行模 10 运算 (% 10),即可提取出新的个位数字,也就是原始数字的十位数字。例如,12 % 10 = 2
  5. 输出结果:将最终计算结果输出。

代码

#include <iostream>
#include <cmath> // For abs()

using namespace std;

int main() {
    int n;
    cin >> n;
    // abs(n) / 10 移除个位, % 10 提取新个位(原十位)
    cout << (abs(n) / 10) % 10 << endl;
    return 0;
}
import java.util.Scanner;
import java.lang.Math; // For Math.abs()

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        // Math.abs(n) / 10 移除个位, % 10 提取新个位(原十位)
        System.out.println((Math.abs(n) / 10) % 10);
    }
}
# 读取输入
n = int(input())
# abs(n) // 10 移除个位, % 10 提取新个位(原十位)
print((abs(n) // 10) % 10)

算法及复杂度

  • 算法:整数除法与模运算。
  • 时间复杂度: - 仅涉及常数时间的计算。
  • 空间复杂度: - 仅需常数空间存储变量。