随笔 - 73  文章 - 0 评论 - 0 阅读 - 6680
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

基础数论

X!1=1×1!+2×2!+3×3!+....+(x1)×(x1)!

互质

互质数为数学中的一种概念,即两个或多个整数的公因数只有1的非零自然数。公因数只有1的两个非零自然数,叫做互质数。

%模运算
(a + b) % p = a % p + b % p;
(a - b) % p = a % p - b % p;//a>=b
(a * b) % p = (a % p) * (b % p);
(a / b) % p = a * get_inv(b, p);//逆元
(a ^ b) % p = ((a % p) ^ b) % p;
((a + b) % p * c) % p = ((a * c) % p + (b * c) % p) % p;
a% p = (a + p) % p;
a的b次方%p=(a+p)b次方%p;
高精度取模运算
m是一个10^10000的数,n是一个int范围的数
1234%7=((((1)%7*10+2)%7*10+3)%7*10+4)%7
int ans = 0;
for (int i = 0; i < len; i++)//s[i]存高精度数的每一位
{
	ans = (ans * 10 + s[i]) % n;
}
ans为m%n
异或运算
^异或运算:
异或满足 交换律,结合律(和乘法极为相似)
a^ a = 0;
a ^ 0 = a;
a^ b = b ^ a;
a^ b^ c = a ^ (b ^ c);//任意改变运算顺序
a^ b^ a = b;

a^ b <= a + b; 

[P5514 MtOI2019]永夜的报应 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

Dilworth定理:

通俗解释:把一个数列划分成最少的最长不升子序列的数目就等于这个数列的最长上升子序列的长度(LIS)

[P1020 NOIP1999 普及组] 导弹拦截 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

求x位数的方法:

log10(x)+1;(取整)

通过取对数的方法可以把指数提出来:log(x^x)=xlog(x)

P2759 奇怪的函数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

分解质因数问题:

(ak)%(m1m2)=0,求k值

将a分解成a=b1c1*b2c2*b3^c3

m1分解成m1=e1f1*e2f2*e3^f3

如果m1分解成的因子e1,e2...a的因子中都包含,则存在k,k=对应因子的指数的倍数的最大值

NOIP2009 普及组] 细胞分裂 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

斐波那契和广义斐波那契:

P1349 广义斐波那契数列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

q

w

寻找中位数:

CQOI2009]中位数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

中位数

在数轴上,有n个数,a1,a2,a3.......an

存在一个数x,使得所以n个数到x的距离和最小。

x为n个数的中位数时,一定成立。

(x为其他数时,也有可能成立)

  • n为奇数时,只有中位数满足。
  • n为偶数时,n / 2 <= x <= n / 2 + 1 ; 都满足

给出一个矩形的三个顶点坐标,求另一个顶点坐标。

原理:平行四边形的对角线相互平分,点1和点2在一条对角线上,点3点4在一条对角线上。

x1+x22=x3+x42,y1+y22=y3+y42

x4=x1+x2x3,y4=y1+y2y3
需要求出那两个点在一条对角线上。

void f(int x1, int y1, int x2, int y2, int x3, int y3)
{
	int d1 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
	int d2 = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);
	int d3 = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);
	int x4, y4;
	if (d1 + d2 == d3)
		x4 = x3 + x2 - x1, y4 = y3 + y2 - y1;
	else if (d1 + d3 == d2)
		x4 = x1 + x3 - x2, y4 = y1 + y3 - y2;
	else
		x4 = x1 + x2 - x3, y4 = y1 + y2 - y3;
}

a+b=2*a&b+a^b

Problem Detail | 2022寒假蓝桥杯基础集训-contest003 (njupt.edu.cn)

小张开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。

小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。

求最大不能组合出的数字是17.

n和m最大不能组合出来的数字是nm-n-m

小L的疑惑

Problem Detail | SAST2021算法线上冬令营-热身赛 (njupt.edu.cn)

将所有数排序,根据排序结果自1到n累加,当第i位数值-1大于前i-1项的累加和时,即可认为其不是连续的,那么答案即为前i-1项的累加和+1.

posted on   naiji  阅读(165)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示