摘要: 欧几里得算法(gcd) 就是辗转相除法 作用:求gcd(a,b) 公式: \(gcd(a,b) = gcd(b,a\%b)\) 写法1: int gcd(int a , int b ){ return !b ? a : gcd(b, a % b); } 写法2 :位运算(超快) (a,b不能为0) 阅读全文
posted @ 2020-10-05 01:50 w_w_t 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 欧拉函数 大佬已经讲的很清楚了,证明非常清晰 互质: 两个数的最大公约数为 $1$ , 称这两个数互质 求一个数的欧拉函数: 利用公式 int phi(int n) { int ans = n; for (int i = 2; i <= n / i; i++) { if (n % i == 0) { 阅读全文
posted @ 2020-10-04 16:08 w_w_t 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 前缀和 前缀和就是数组前 \(i\) 项之和,主要作用是能快速求出 区间和 下标 : $1$ $2$ $3$ $4$ $5$ \(a[5]\) : $2$ $4$ $3$ $5$ $8$ 前缀和数组: $2$ $6$ $9$ $14$ $22$ 为了便于计算,数组下标一般从 $1$ 开始,能得到 一 阅读全文
posted @ 2020-10-04 13:32 w_w_t 阅读(215) 评论(0) 推荐(0) 编辑
摘要: //双链表 typedef struct DLNode{ int data; struct DLNode *prior; struct DLNode *next; }DLNode; //初始化 void InitList(DLNode *&L){ L = (DLNode*)malloc(sizeof 阅读全文
posted @ 2020-09-07 22:33 w_w_t 阅读(145) 评论(0) 推荐(0) 编辑
摘要: //单链表 typedef struct LNode{ int data; struct LNode* next; }LNode; LNode L; //初始化 void InitList(LNode *&L){ L = (LNode*)malloc(sizeof(LNode)); L -> nex 阅读全文
posted @ 2020-09-07 20:20 w_w_t 阅读(134) 评论(0) 推荐(1) 编辑
摘要: 待填 阅读全文
posted @ 2020-06-25 17:32 w_w_t 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题目:P1835 素数密度 题目中区间的端点很大,但是区间的长度不长. 解题思路: 1.先用埃氏筛选掉 1 到 sqrt(R) 的合数 2.用第一步的素数表筛选掉 L 到 R 的合数 (一二步一起进行) 3.计算素数个数 代码: #include<bits/stdc++.h> using names 阅读全文
posted @ 2020-06-21 17:04 w_w_t 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 基础知识 最大公约数: 最大公约数就是两个数的最大公共因子 x = abc , y = bcdef (a ~ f 均为质因子) 则 gcd ( x , y ) = bc 计算方法: 1.质因数分解法,如上举例所示 2.欧几里得算法(辗转相除法) 算法原理:gcd(a,b) = gcd( b , a 阅读全文
posted @ 2020-06-21 16:50 w_w_t 阅读(692) 评论(0) 推荐(0) 编辑
摘要: 基础知识 1.素数(质数): 素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。(prime number) 2.性质:(待填) 3.基本判断思路: 在一般领域,对正整数n,如果用2到 sqrt(n)之间的所有整数去除,均无法整除,则n为质数。 素数筛 1.暴力 按照基本判断思路 阅读全文
posted @ 2020-06-20 22:20 w_w_t 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 1.找筷子 解题思路: 要找出唯一单着的那个数,可以用异或的方式 我们已知 a ^ a = 0 ,对于存在偶数个的数字,迟早会互相抵消,奇数个的数字也会两两抵消,只剩下最后一个答案。 AC代码: #include<iostream> #include<cstdio> #include<algorit 阅读全文
posted @ 2020-06-18 21:55 w_w_t 阅读(161) 评论(0) 推荐(0) 编辑