数学 数论
文章平均质量分 66
zsmj_sy
QQ 2439380624
展开
-
LeetCode2020春季编程赛团队赛 题解(暂完成ABCD题)
D题 切割数组题目链接 : https://leetcode-cn.com/problems/qie-fen-shu-zu/题目大意:拆分原来的一个数组,拆分后的每个数组满足最左和最优元素gcd>1gcd>1gcd>1 求最小拆分次数。题解思路:先手写了几个数据,否决了贪心的做法,强行把每个数组扩成最大 这样的做法不是最优的。考虑dp的思路,大概的复杂度是O(nm)O...原创 2020-04-28 01:10:00 · 311 阅读 · 0 评论 -
2018 icpc 南京站 网络赛 J sum (魔改线性筛法)
题目链接:https://nanti.jisuanke.com/t/30999A square-free integer is an integer which is indivisible by any square number except 11. For example, 6=2⋅36=2⋅3 is square-free, but 12=22⋅312=22⋅3 is not, bec...原创 2018-09-02 13:33:43 · 458 阅读 · 0 评论 -
gcd lcm相关数学问题
HDU-5584一般题目中含有lcm的时候尽量往gcd上转。。利用gcd的性质解决问题题目链接 https://vjudge.net/problem/HDU-5584题意:从初始位置(x,y)开始每次可以走lcm(x,y)步到(x+lcm,y)或(x,y+lcm) (这里的x y为当前的x和y) 给你最终的x和y问有多少种可能的起始点。思路:我们先从起点正着推:假设起点为(x,...原创 2018-09-06 00:27:56 · 555 阅读 · 0 评论 -
icpc网络赛 青岛站 J press the button(思维)
题目大意:有一个timer,每次按下按钮就会重置为v+0.5并开始倒计时(这里的计时记的是real time多一秒,这里的timer就减一秒),如果当前灯是亮的,counter++, 如果灯是关的,就把灯打开,如果timer倒计时到0,灯熄灭。BB和DD两个人,在从0到t的时间中,每当当前的real time%a==0时,BB按下按钮b次,real time%c==0时,DD按下按钮d次(按...原创 2018-09-18 23:57:55 · 192 阅读 · 0 评论 -
容斥原理部分例题及板子
高精度开k次根号ll pow_mul(ll x,ll k){ ll ans=1; while(k) { if(k&1) { double judge=1.0*INF/ans; if(x>judge)return -1; ans*=x; ...原创 2018-10-06 20:52:59 · 524 阅读 · 0 评论 -
POJ-3696 欧拉定理 公式推导
题目链接:https://vjudge.net/problem/POJ-3696题目大意:给定一个数L,问是否存在这样的kL=88...888,求最小的全是8的数的长度,如果无法构造,输出0题解思路:全是8的数可以表示为 分离分母之后等式变为: 而是99999这样的数,是9的倍数,要让这个等式成立,唯一分解后的L中质因子2的数量必然小于等于3,如果小于3,就把左右两式子中这部...原创 2018-11-20 20:20:04 · 411 阅读 · 0 评论 -
杜教BM板子解决线性递推问题
https://codeforces.com/contest/1117/problem/D转自https://blog.csdn.net/qq_37632935/article/details/87889975这题中看到了一个30ms的神仙代码,嫖了个杜教BM的板子O(n)搞一下前面几百项,放进去。。。 nb#include<bits/stdc++.h>usin...转载 2019-02-24 14:51:27 · 415 阅读 · 0 评论 -
Codeforces Round #552 (Div. 3) E stl模拟 F dp G gcd
contest链接https://codeforces.com/contest/1154E题解思路直接哈希模拟删除T了,可以用setsetset和lowerlowerlower_boundboundbound函数减少寻找下一个没有删除元素的复杂度#include <bits/stdc++.h>using namespace std;#define IOS ios::syn...原创 2019-04-25 20:10:36 · 139 阅读 · 0 评论 -
数论学习之 fft (模板+例题)
例题1:给定两个很大的整数(会卡掉高精度)输出其乘积用作fft的模板#include<bitset>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#define N 400005#define pi acos(-1.0)us...原创 2019-07-23 19:18:51 · 232 阅读 · 0 评论 -
数论学习之错排公式
设D(n)表示n个数错排的方法数1.dp推导假设第i个和第j个元素,将第i个元素放在了第j个元素的位置上此时第j个元素的放置有两种方法 1.放在i的位置上 这时其余(n-1)个元素错排列,即D(n-1)2.不放在i的位置上,这时其余(n-2)个元素错排列即D(n-2)而且j有(n-1)种取法,得到D(n)的递推式 :D(n)=(n-1)(D(n-1)+D(n-2))2.容斥原理推导首先,n个数全排...原创 2018-05-16 21:19:58 · 720 阅读 · 0 评论 -
数论学习之康托展开(正逆)
康托展开应用于全排列模型的问题,可以用康托展开来求一个排列在全排列中是排第几个的,可以说是一种状态压缩,这样我们就直到这个排列的状态了每种排序都会产生一个独一无二的序列号:我们用a[i]表示:在当前尚未出现的数字中,a[i]是第几大的数字,也就是说从第i位开始到最后,比第i位小的数有几个(1<=i<=n)从左往右计算:C=a[1]*(n-1)!+a[2]*(n-2)!+...+a[i]...原创 2018-05-07 21:21:39 · 141 阅读 · 0 评论 -
数论学习之组合数
const int N =5000;const int mod =(int)1e9+7;int comb[N][N];void init()//当总数较小时可以用组合数公式求得{ for(int i=0;i<N;i++) { comb[i][0]=comb[i][i]=1; for(int j=1;j<i;j++) ...原创 2018-05-13 21:11:22 · 459 阅读 · 0 评论 -
快速幂 矩阵快速幂
快速幂取模:原理:合并相同项,减少计算计算(a^b)%c当b很大的时候用,朴素算法复杂度为n,快速幂复杂度为logn以下为二进制优化后的代码:ll quick_pow_mod(ll a,ll b,ll c){ ll res=1; while(b) { if(b & 1) { res=(re...原创 2018-03-12 19:41:13 · 294 阅读 · 0 评论 -
数论学习之逆元(直接求,打表)
inv(a)*a=1(mod p),这里的inv(a)就是a关于p的逆元,这里a和p一定互质量利用扩展欧几里德直接求:ax+by=1ax%b=1%bax=1(mod b)这样就求出x是a关于b的逆元void ex_gcd(ll a,ll b,ll &x,ll &y,ll &d){ if(!b) { d=a;x=1;y=0; } ...原创 2018-04-30 20:59:44 · 396 阅读 · 0 评论 -
数论学习之欧拉函数(直接求,打表)
欧拉函数表示小于等于n且与n互质的数的数量直接求,用到了容斥定理:先求一个数的质因数分解int phi(int x){ int ans=x; for(int i=2;i*i<=x;i++) { if(x%i==0) { ans=ans/i*(i-1); while(x%i==0...原创 2018-04-30 22:05:42 · 876 阅读 · 0 评论 -
数论学习之卢卡斯定理(组合数取模)
利用逆元,当n和m很大,mod比较小的时候使用C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p,递归const int N = 100000 + 5;LL mul(LL a, LL b, LL p){//快速乘,计算a*b%p LL ret = 0; while(b) { if(b & 1) { ...原创 2018-05-01 14:29:32 · 244 阅读 · 0 评论 -
数论学习之中国剩余定理
针对线性方程组中国剩余定理给出了以下的一元线性同余方程组:中国剩余定理说明:假设整数m1,m2, ... ,mn两两互质,则对任意的整数:a1,a2, ... ,an,方程组(S)有解,并且通解可以用如下方式构造得到:设是整数m1,m2, ... ,mn的乘积,并设是除了mi以外的n- 1个整数的乘积。设这个就是逆元了通解形式为在模M的意义下,方程组(S)只有一个解:ll a...原创 2018-05-01 16:47:43 · 319 阅读 · 0 评论 -
大数区间素数筛
给定a,b求[a,b)区间内的素数数量(1 ≤ a ≤ b < 231, b - a ≤ 100000)暴力线性筛mle,这时就要用到区间线性筛了,利用数组偏移,只需要筛一下(1,sqrt(b))#include <iostream>#include <cstring>#include <algorithm>using namespace std;...原创 2018-05-17 21:13:01 · 1185 阅读 · 0 评论 -
Codeforces Round #470ABC 题解
A - Protect Sheep CodeForces - 948A (暴力)水题不贴代码了,暴力判断羊的相邻的四个点有没有狼,如果没有的话暴力把所有空的点填上狗- -B - Primal Sport CodeForces - 948B (数学)Alice and Bob begin their day with a quick game. They first choose a startin...原创 2018-04-27 21:56:31 · 402 阅读 · 0 评论 -
素数筛法
埃氏筛法:void judge_prime()//埃氏筛法{ for(int i=2;i<N;i++) { is_prime[i]=true; } for(int i=2;i*i<N;i++) { if(is_prime[i])//找到一个质数它的倍数全都不是质数 { ...原创 2018-03-11 20:37:39 · 223 阅读 · 0 评论