
数论
YancyKahn
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Leetcode每日一题】389. 找不同(异或法求解,击败100%用户时间)
Leetcode每日一题题目链接: 389. 找不同难度: 简单解题思路: 异或的性质:任何数异或自己都为0;任何数异或0都等于自己。 所以让0对s和t分别进行异或,剩下的就是加入的数。C++和Python的效率差别还是很大的,相同的逻辑C++能超越100%时间。题解:# python3 击败61%时间class Solution: def findTheDifference(self, s: str, t: str) -> str: res = 0原创 2020-12-18 11:12:51 · 289 阅读 · 0 评论 -
【Leetcode每日一题】204. 计数质数(欧拉线性筛)
Leetcode每日一题题目链接: 204. 计数质数难度: 简单解题思路 : 查找小于n的素数的个数,先用欧拉筛法初始化到所有的素数。然后再统计结果。题解:class Solution: def countPrimes(self, n: int) -> int: if n <= 1: return 0 # 欧拉筛法(小于) visit = [0] * n visit[0] = visit[原创 2020-12-03 10:10:21 · 417 阅读 · 0 评论 -
HDU-5976 Detachment
【HDU-5976 Detachment】 题意: 给定一个数字分成若干段, 要求每一段的长度不相等, 要求这些段的乘积最大。 分析: 这是一个标准的Maximum Product Over Partitions Into Distinct Parts 问题,打表找规律, 参见论文#include <algorithm>#include <cstdio>#inc...原创 2018-10-02 18:41:34 · 351 阅读 · 0 评论 -
HDU-5974 A Simple Math Problem
【HDU-5974 A Simple Problem】 题意:给定两个数(a,b), 这两个数互质。 目前已知【x+y=a, x*y/gcd(x,y)=b】求(x, y) 分析:先说结论:两个互质的数他们的乘积和加和也互质, 即有gcd(x, y) = gcd (a, b)证明:引论1: 若m, n互质, 那么m和m+n也互质反证法:假设:若m, n互质,m和m+n不互质。那么m和...原创 2018-10-02 17:49:15 · 471 阅读 · 0 评论 -
HDU-6189(Law of Commutation)
先打表可以发现当 a 为奇数的时候, 结果全为 1当 a 为偶数时: 因为a为偶数, 则a可以表示为 a = 2*k a^b%mod 可表示为: a^b%mod = 2^b * k^ b % 2 ^ n 当b >= n 时, a^b%mod == 0 恒成立 所以就要求满足此式: a^b%mod == b^a%mod == ...原创 2018-07-15 19:09:12 · 356 阅读 · 0 评论 -
快速幂与矩阵快速幂
快速模幂typedef long long LL;const LL MOD = 100000007;LL qpow(LL x, LL n){ LL result = 1; while(n) { if(n & 1) result = result*x%MOD; n >>= 1; x ...原创 2018-07-15 18:33:41 · 287 阅读 · 0 评论 -
HDU-6182(A Math Problem)
给定n求满足k^k < n的数的个数, 数据范围 n < 1e18, 应用快速幂.#include <iostream>using namespace std;typedef long long LL;LL qpow(LL x, LL n){ LL result = 1; while(n) { if(n & 1)...原创 2018-07-15 15:43:59 · 363 阅读 · 0 评论 -
康托展开
康托展开原创 2018-02-27 22:16:20 · 272 阅读 · 0 评论 -
数论-欧几里得算法(辗转相除法)
基本算法:设 a = kb + r, 其中 a, b, q, r 都为整数, 那么: gcd(a, b) = gcd(b, r)具体步骤:设整数 a, b 且 b != 0. 做带余除法 a = qb + r, (0 <= r <= |b|). 若 r = 0, gcd(a, b) = b;若 r > 0, 在对b 于 r做带除余法 b = q'r + r'.若原创 2018-01-25 09:48:24 · 544 阅读 · 0 评论 -
欧几里得(gcd) + 拓展欧几里得(ext_gxd)
1. 欧几里得算法//求最大公约数和最小公倍数int gcb(int a, int b){ return b == 0 ? a : gcb(a, a%b);}2.拓展欧几里得求解线性方程组 ax + by + c = 0void gcd(int a, int b, int &x, int &y, int &d){ if(!b){ d = a; x原创 2017-10-21 15:02:34 · 585 阅读 · 0 评论