mod函数

mod在vb中什么意思

限于喜欢 提交于 2020-02-11 17:36:38
mod在vb中什么意思? vb中mod意思是指被除数除以除数所得的余数,叫取模运算符。 语法: MOD ( Number1, Number2 ) 。 在vb开发环境下取模运算(mod)和求余(rem)运算相同,因为在大多数的编程语言里,都用'%'符号表示取模或者求余运算。例如 15 Mod 4 结果返回 3,12 Mod 2 结果返回 0。在vb的命令窗口中输入help mod或者doc mod可以获得该函数的帮助信息。 扩展资料: 如果 Number1 或 Number2 是浮点值,则将返回除法运算的浮点余数。结果的数据类型是最小的数据类型,该类型可以容纳由 Number1 和 Number2 的数据类型相除得到的所有可能值。 如果 Number1 或 Number2 计算结果等于 Nothing,则将其视为零。 如果 Number2 为零,Number1 为整数时,| 合肥代孕威信15023219993 , 太原代孕威信15023219993 、 上海代孕威信15023219993 、 广州代孕+15023219993 、 重庆代孕+15023219993 , 武汉代孕+15023219993| 引发 DivideByZeroException 异常。Number1 为浮点数时返回 NaN。 来源: https://www.cnblogs.com/ipengrui2/p

逆元打表

Deadly 提交于 2020-02-08 18:41:17
1-n逆元打表 有的时候要打的表是1-(mod-1)的,包含范围内的所有值。 const int maxm = 3e6 + 5 ; const int mod = 1e9 + 7 ; int inv [ maxm ] ; void init ( ) { inv [ 1 ] = 1 ; for ( int i = 2 ; i < maxm ; i ++ ) { inv [ i ] = ( mod - mod / i ) * inv [ mod % i ] % mod ; } } 原理: 注意 :因为要保证 i -1 是正整数,因此左右同时加上p,因此最终的式子为inv[i]=(p-p/i)inv[p%i]%p 阶乘逆元打表1!-n!: const int maxm = 3e6 + 5 ; const int mod = 1e9 + 7 ; int fac [ maxm ] ; int inv [ maxm ] ; int ppow ( int a , int b , int mod ) { a % = mod ; int ans = 1 ; while ( b ) { if ( b & 1 ) { ans = ans * a % mod ; } a = a * a % mod ; b >>= 1 ; } return ans ; } void init ( ) { fac [ 0 ]

洛谷1829:crash的数字表格

我是研究僧i 提交于 2020-02-07 08:07:51
洛谷1829:crash的数字表格 题意: 求 \(\sum_{i=1}^N\sum_{j=1}^Mlcm(i,j)\) 。 数据范围 \(:n,m\leq10^7\) 。 思路: 易得:原式 \[ \sum_{i=1}^N\sum_{j=1}^M\frac{ij}{gcd(i,j)}​ \] 枚举 \(gcd(i,j)=d\) 。 \[ \sum_{d=1}^{min(N,M)}\sum_{i=1}^N\sum_{j=1}^M[gcd(i,j)=d]\frac{ij}{d} \] 把 \(d\) 给提出来,其实就是将枚举项 \(i,j\) 看成是 \(di,dj\) 。 \[ \sum_{d=1}^{min(N,M)}\frac{1}{d}\sum_{i=1}^{\frac{N}{d}}\sum_{j=1}^{\frac{M}{d}}[gcd(i,j)=1]idjd.\\\sum_{d=1}^{min(N,M)}d\sum_{i=1}^{\frac{N}{d}}\sum_{j=1}^{\frac{M}{d}}[gcd(i,j)=1]ij \] 我们知道莫比乌斯函数的一个重要性质。 \[ \sum_{d|n}\mu(d)=[n=1] \] 代入可得: \[ \sum_{d=1}^{min(N,M)}d\sum_{i=1}^{\frac{N}{d}}\sum_{j=1}^{\frac

一个人的高三楼

ぃ、小莉子 提交于 2020-01-29 00:08:00
题目链接: Click here Solution: 题目名字有点伤感啊。。。 直接看题吧, \(k\) 次前缀和,瞬间想到 \(O(nk)\) 的做法,20pts到手了,走吧! 回到正题。。。不难想到,我们构造一个生成函数 \(G(x)=\sum_{i=0}^n x^i\) ,同时有 \(A(x)=\sum_{i=1}^n a_ix^i\) 那么 \(A\times G\) 就相当于对 \(A\) 做了一次前缀和了,那么 \(S_n^k=A\times G^k\) ,难道要多项式快速幂? 多项式快速幂是不可能的,这辈子都不可能的,考虑 \(G\) 的特殊性,它的每一项系数都是1 我们一下子就能发现, \(G^k\) 与组合数的关系, \(G^k\) 的第 \(i\) 项的系数就是 \({i+k-1\choose k-1}\) ,不就是插板法吗 那么我们把 \(G^k\) 求出来之后,直接上 \(NTT\) 即可 Code: #include<bits/stdc++.h> #define int long long #define Pi acos(-1.0) using namespace std; const int N=4e5+11; const int mod=998244353; int n,m,k,len=1,tim,p[N]; int a[N],trans[N],inv

扩展 Lucas 定理

蓝咒 提交于 2020-01-27 03:50:52
扩展Lucas定理 原问题 求: \[ C^{n}_{m}\quad(mod\;p) \] 其中, \(n\) , \(m\) 很大,不能够直接求阶乘。 \(p\) 大小可接受但是不保证是质数。 学过 \(Lucas\) 定理后,我们知道其限制是 \(p\) 必须为质数。 我们可以分解问题: 既然去了这个条件,我们可以将 \(p\) 进行质因数分解,模每一个 \(p_i^{k_i}\) ,然后就相当于得到一组同余方程组。 用 \(CRT\) 解出即可。 本人在这里因为 \(CRT\) 学的不太好产生了一个错误思路,导致纠结好久, 总结在此 。 若有人同样误入歧途,希望有些许帮助。(如果没有纠结什么奇怪想法最好先不看 那么现在问题是解: \[ C^{n}_{m}\implies\frac{m!}{(n)!(m-n)!} \quad(mod\;p_i^{k_i}) \] 问题有二: 一, \(m,n\) 都很大,不能直接求出阶乘。 ​ 二, \(n!,(m-n)!\) 内可能有 \(p_i\) 这个因子,无法求出逆元。 很难解决,但是我们发现,阶乘取模一个数后呈现一个以长 \(p_i^{k_i}\) 循环节不断循环的模式,似乎可以只处理一个循环节,再处理余项,两者长度都不超过 \(p_i^{k_i}\) ,可以接受。 另外,从其中我们可以提出所有的 \(p_i\) 使式子变成这样: \

bzoj 3626 [LNOI2014] LCA 题解

ⅰ亾dé卋堺 提交于 2020-01-26 07:12:22
博客观赏效果更佳 题意简述 给你一颗n<=1e5个节点树,1e5次询问,每次给你(l,r,z),求[l,r]区间内每个数和z在树上LCA的深度的和。对201314取膜。 注:根节点深度是1。 思路框架 (x,y)的LCA深度就是,把x到根点权+1,然后询问根到y点权和多少。 那么我们相当于,把[l,r]每个点到根点权都+1,然后询问根到z的点权和。差分做。 具体思路 差分做法:把一个询问(l,r,z)拆成(1,r,z)和(1,l-1,z)。(l,r,z)的答案显然就是(1,r,z)-(1,l-1,z)。这样我们要求的就是若干的前缀点的答案了。 我们把l-1和r都打上标记i从1到n遍历一下,不断在根到i的路径上点权+1。的如果某个点有标记,那么就把所有的z拿出来询问一遍,更新询问的答案。这样是O(nlogn+q)。 还有,对于每个标记,还要记录是l-1还是r,因为l-1的答案还要带一个负号。 代码 # include <bits/stdc++.h> using namespace std ; namespace Flandre_Scarlet { # define N 54444 # define mod 201314 # define F(i,l,r) for(int i=l;i<=r;++i) # define D(i,r,l) for(int i=r;i>=l;--i) #

luoguP5860 「SWTR-03」Counting Trees 生成函数+多项式exp

情到浓时终转凉″ 提交于 2020-01-18 16:36:16
标签:生成函数,多项式exp 有 $n$ 个点,每个点有一个度数 $v[i]$,代表如果选择这个点就必须满足这个点与 $v[i]$ 条边相连. 求:有多少种选法,使得所选集合中的点能构成一棵树. 如果 $m$ 个点能生成一颗树,那么一定满足 $\sum v_{i}=2\times (m-1)$ 这是因为度数之和其实就是边的数量 $\times 2$. ~~然后感性理解~~:如果 $m$ 个点满足 $\sum v_{i}=2\times(m-1)$,则一定能构成一棵树. 那就将问题转化成:有 $m$ 个物品,每个物品的价值为 $v_{i}-2$,求装满一个体积为 $-2$ 的背包有多少种选法. 对于所有 $v_{i}-2>0$ 的部分,我们直接设生成函数+多项式 exp 来做,然后 $v_{i}=2$ 的部分直接乘上贡献. 最后 $v_{i}=1$ 的部分直接来一个二项式定理展开,然后依次枚举 $v_{i}=1$ 的个数就好了. 因为有 $ori-i=-2$,所以有 $ori=i-2$. code: #include <cmath> #include <cstring> #include <algorithm> #include <cstdio> #include <string> #define ll long long #define ull unsigned long long

[题解] [Codechef] CNTL

此生再无相见时 提交于 2020-01-18 08:59:34
题面 题解 第一问很简单, 如果 \(n - k\) 是偶数那么答案就是 \(2 ^ k - 1\) , 如果 \(n - k\) 是奇数答案就是 \(2^k - 2\) 第二问怎么办, 我们对于 \(n - k\) 是偶数讨论 我们要做的是, 对于每一个数, 我们要让他选奇数次最后的答案可能性才会最大 并且所有的数选的次数加起来是 \(n\) 我们考虑指数型生成函数 \(\frac{e^x-e^{-x}}{2}\) 把它展开后, 偶数位都是 \(0\) , 奇数位都是 \(1\) 那么我们只要求 \(\frac{e^x-e^{-x}}{2}^k\) 在 \(x ^ n\) 上的系数即可 如果 \(n - k\) 是奇数的话就变成求 \(\frac{e^x-e^{-x}}{2}^{k-1}*\frac{e^x+e^{-x}}{2}\) 在 \(x^n\) 上的系数, 即 \(1\) 取偶数个, 其他的都取奇数个 二项式定理展开即可 注意最后答案还要乘上一个 \(n!\) 因为我们算出来的是无序方案, 但答案事实上是求有序方案 Code #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> const int N = 100005; const int mod = 1e9 + 7;

温故而知新汇总贴

喜夏-厌秋 提交于 2020-01-01 04:36:48
最近博客搬家,大家如果想继续看些有价值的内容的话请点击链接 温故而知新汇总贴 1、字符串 http://www.newzol.cn/forum.php?mod=viewthread&tid=28&extra=page%3D1 2、虚表 http://www.newzol.cn/forum.php?mod=viewthread&tid=13&extra=page%3D2 3、纯虚类 http://www.newzol.cn/forum.php?mod=viewthread&tid=12&extra=page%3D2 4、指针和引用 http://www.newzol.cn/forum.php?mod=viewthread&tid=11&extra=page%3D2 5、内存拷贝函数 http://www.newzol.cn/forum.php?mod=viewthread&tid=10&extra=page%3D2 6、类、结构、字节对齐 http://www.newzol.cn/forum.php?mod=viewthread&tid=9&extra=page%3D2 7、hashtable http://www.newzol.cn/forum.php?mod=viewthread&tid=8&extra=page%3D2 8、set http://www.newzol.cn

喵哈哈村的魔法考试 Round #7 (Div.2) 题解

[亡魂溺海] 提交于 2019-12-27 04:16:21
喵哈哈村的魔法考试 Round #7 (Div.2) 注意!后四道题来自于周日的hihocoder offer收割赛第九场。 我建了个群:欢迎加入qscoj交流群,群号码:540667432 大概作为该oj的讨论吧,未来应该会上线一个bbs的。 喵哈哈村的七十六 签到题,直接for一遍判断就好了嘛 #include<bits/stdc++.h> using namespace std; int n,a; int main(){ while(cin>>n>>a){ int ans = 0; for(int i=0;i<n;i++){ int b,c; cin>>b>>c; if(a>=b)ans=max(ans,c); } cout<<ans<<endl; } } 喵哈哈村的麦克雷 对于这道题,你需要知道bfs。 把0压进队列里面,然后BFS就行了。 bfs找到的,就一定是最近的路。 #include<bits/stdc++.h> using namespace std; const int maxn = 805; string s[maxn]; int mp[maxn][maxn]; int dx[4]={1,-1,0,0}; int dy[4]={0,0,1,-1}; int n,m; int main(){ while(scanf("%d%d",&n,&m)!=EOF){