题目链接
题目描述
给定一个整数 n
,请计算该整数的十位数字。十位数字定义为 floor(|n| / 10) % 10
。
输入描述:
在一行中输入一个整数 n
。
输出描述:
输出一个整数,表示 n
的十位数字。
解题思路
本题要求提取一个整数的十位数字,是数字处理中的一个基本操作,可以看作是"提取个位"操作的延伸。
- 读取输入:从标准输入读取一个整数
n
。 - 取绝对值:根据题目要求,计算需要基于
n
的绝对值,所以先用abs()
函数处理。 - 移除个位:通过对
|n|
进行整除 10 的操作(|n| / 10
),可以有效地移除个位数字,并将十位数字移动到新的个位上。例如,|123| / 10 = 12
。 - 提取新个位:对上一步的结果再进行模 10 运算 (
% 10
),即可提取出新的个位数字,也就是原始数字的十位数字。例如,12 % 10 = 2
。 - 输出结果:将最终计算结果输出。
代码
#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)
算法及复杂度
- 算法:整数除法与模运算。
- 时间复杂度:
- 仅涉及常数时间的计算。
- 空间复杂度:
- 仅需常数空间存储变量。