分类 默认分类 下的文章

先来介绍一下mathmaths的区别 他们的原型都是mathematics,但由于英语变体的拼写差异,以至于他们各有各的含义。

math

他是美式英语的标准拼写,更常用于正式的学术文章、教科书和考试场合,体现专业性和严谨性,所以更适合指学科。

maths

他则是影视式英语的标准拼写,更加口语化,适合日常对话和教育场合,使用更为灵活。

机器码一共有4种分别为原码、反码、补码、移码(增码) 原码:

原码是由符号位(正为1;负为0)再真值组成的。例如-3的8位原码的求法为:
         -3的符号位是-,在二进制中表示为1,再利用短除法求出3的二进制11,结合后为1000 0011。

其优点是简单易手写,缺点是机器需要单独设立加法器和减法器,0还有+0(0000 0000)和(1000 0000)两种形式。

反码: 反码分两种情况正数的情况下与原码相同,负数为把原码除符号位按位取反。还是拿-3举例: -3是负数,依照以上规则需要把除符号位按位取反得到(1111 1111)。 其优点是可以直接连符号加减,简化机器,但还是没有解决0有符号。

补码: 补码也分两种情况正数的情况下与反码相同,负数为把反码加1。我们拿-2举例: -2是负数,依照以上规则需要加1得到(1111 1111)。 其优点是可以解决0的符号,但美中不足的是-128在补码里是(1000 0000)也就是反码的-0,这是一个小瑕疵。

移码: 移码是将补码的符号位取反。还是拿-2举例: 依照以上规则需要把符号位按位取反得到(0111 1111)。 解决了补码的瑕疵。

浮点数的表示格式

浮点数通常由三部分组成:符号位、指数位、和小数位。在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$ 。