分类 默认分类 下的文章

浮点数的表示格式

浮点数通常由三部分组成:符号位、指数位、和小数位。在IEEE754标准中,这通常表现为32位(单精度)或64位(双精度)的格式。

  • 符号位: 1位,用于表示正负。
  • 指数位: 可变位数,用于表示数值的范围。
  • 小数位: 也是可变位数,用于表示数值的精度。

浮点数精度范围

单精度浮点数(32位)

  • 可表示的最小值: 约$2^{-23}\times1.7549437e^{-38}$
  • 可表示的最大值: 约$2^{23}\times3.402823585e^{38}$
  • 精度: 大约6-7位有效数字。

双精度浮点数(64位)

  • 可表示的最小值: 约$2^{-52}\times1.7549437e^{-38}$
  • 可表示的最大值: 约$2^{52}\times3.402823585e^{38}$
  • 精度: 大约15-16位有效数字。

实属的范围和精度

实属包括有理数和无理数,他们在计算机中的表示通常通过浮点数来实现。然而,由于浮点数的表示方式,某些实属可能无法被精确表示。

  • 非规格化数(subnormal): 如果指数位全为0,而尾数不全为0,而尾数位不全为0,则表示为非规格化数,这是一个非常小的数。
  • 无穷大: 指数位全为1时,表示的是无穷大。
  • NaN(Not a Number): 当指数位不全为0或全为1,且尾数位不全为0时,表示的是不是一个数字

精度和误差

由于浮点数的表示是基于有限的二进制位数,因此存在量化误差。这种误差在计算中是不可避免的,尤其是在进行高精度计算时。例如,两个具有非常接近值的浮点数相加可能会导致结果略有偏差。 总之,浮点数提供了一种在计算机中表示实属的有效方式,但同时也伴随着精度和范围的限制。在处理需要极高精度的科学计算或工程应用时,可能需要采用其他数值计算技术,如复数或高精度。

组合数问题

题目背景

给定正整数 $n,m$,求在 $n$ 个本质不同的物体中选取 $m$ 个时,有多少种本质不同的方案。

题目描述

形式化地讲,给定正整数 $n,m(1\leq n,m\leq 2000)$ ,求

$$ \mathrm{C}_{n}^m $$

也即

$$ \binom{n}{m} $$

需要注意的是,本题所有运算都在模 $998,244,353$ 下进行。

输入格式

第 $1$ 行一个正整数 $T$ ,表示数据组数。

第 $2\sim T+1$ 行,每行有两个整数 $n,m$,含义如题目描述中所示。

输出格式

共 $T$ 行,每行一个整数表示答案。

样例 #1

样例输入 #1

3
5 3
4 2
10 7

样例输出 #1

10
6
120

提示

对于 $100%$ 的数据,满足 $1\leq T\leq 10^5,1\leq n, m\leq 2000$。

需要注意以下两点:

  • 鉴于效率较低,本题不能使用 iostream 里的 cin/cout 输出流。

  • 不保证数据满足 $m\leq n$ 。