mod函数

The Preliminary Contest for ICPC Asia Nanjing 2019(A B D H F)

我与影子孤独终老i 提交于 2019-11-29 08:03:56
A. The beautiful values of the palace 待补 B. super_log 题意:研究一下就是求幂塔函数 %m的值。 思路:扩展欧拉降幂。 AC代码: 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const long long mod = 1e9 + 7; 5 int a, b, m; 6 ll eular(ll n) 7 { 8 ll ans = n; 9 for(int i = 2;i * i <= n;i++) 10 { 11 if(n % i == 0) 12 { 13 ans -= ans / i; 14 while(n % i == 0) n /= i; 15 } 16 } 17 if(n != 1) ans -= ans / n; 18 return ans; 19 } 20 int ksm(ll a, ll n, ll mod) 21 { 22 if(n == 0) return 1; 23 if(a <= 1) return a; 24 if (n == 0) 25 return 1; 26 if (a<=1) 27 return a; 28 bool flag = false; 29 ll t = 1; 30 for (int

Polya 定理入门[Burnside引理,Polya定理,欧拉函数]

雨燕双飞 提交于 2019-11-28 19:57:30
\(这篇blog重点讨论Polya的应用, 更详细的证明请百度 .\) \(Burnside引理\) \[L=\frac{1}{|G|}\sum_{i=1}^{|G|}D(a_i)\] \(L\) : 本质不同的方案数. \(G\) : 置换群集合. \(a_i\) : 置换群中的第 \(i\) 个置换. \(D(a_i)\) : 进行 \(a_i\) 这个置换, 状态不会变化的方案 数量. 该引理与下方内容没有太大关系, 可以暂时忽略. \(Problem\) 链接 有 \(N\) 个石子围成一圈, 使用 \(M\) 种颜色染色, 求有多少种本质不同的方案. 借此问题引入 \(Polya定理\) \(↓\) \(Polya定理\) \[L=\frac{1}{|G|}\sum_{i=1}^{|G|}M^{C(g_i)}\] 先丢出公式. 这道题的 置换群 \(G\) : 转 \(0\) 次, 转 \(1\) 次 ...转 \(N-1\) 次, (皆为顺时针转动). 若满足旋转 \(k\) 个位置, 状态和原来相同, 那么 \(i\) 位置颜色 等于 \((i+k)\%N\) 位置颜色, 旋转 \(t\) 次, 仍和原来位置相同, 即 \(i\) 位置与 \((i+t*k)\%N\) 位置颜色相同, 则 \(i\) 旋转 \(t\) 个 \(k\) 次, 一定能回到原来位置,

min25筛学习总结

谁说我不能喝 提交于 2019-11-28 18:50:38
前言 杜教筛学了,顺便把min25筛也学了吧= =刚好多校也有一道题需要补。 下面推荐几篇博客,我之后写一点自己的理解就是了。 传送门1 传送门2 传送门3 这几篇写得都还是挺好的,接下来我就写下自己对min25筛的理解吧 。 正文 简介: min25筛同杜教筛类似,是用来解决一类积性函数的前缀和,即 \(\sum_{i=1}^nF(i)\) ,并且这里的 \(n\) 可以达到 \(10^{10}\) 的规模。 但所求积性函数要求满足以下条件: \(F(p)\) 可以表示为简单多项式的形式,比如 \(p_1^{k_1}+p_2^{k_2}+p_3^{k_3}\) , \(p\) 为质数; \(F(p^e)\) 的值要较容易求得。 为什么是这样?往下看就知道啦。 求解: 我们可以将上面说的多项式拆成的每项单独来算前缀和,最后加起来即可。 设 \(f(p)=p^k\) ,我们现在就来求 \(f(i)\) 的前缀和。注意这里 \(f\) 函数是完全积性函数,后面我们需要用到这一性质。 Part 1 : 首先设 \(g(n,j)\) 表示: \(1,2...n\) 中,满足条件的 \(f\) 之和,满足条件是指要么为质数,要么其最小质因子大于第 \(j\) 个质数。 为什么要这么设?后面就知道啦。 之后我们考虑递推求解: 若 \(p_j^2>n\) ,根据定义, \(g(n,j)=g(n

Polya 相关

只愿长相守 提交于 2019-11-28 18:03:09
$这篇blog重点讨论Polya的应用, 更详细的证明请百度 .$ ___ $Burnside引理$ $$L=\frac{1}{|G|}\sum_{i=1}^{|G|}D(a_i)$$ $L$: 本质不同的方案数. $G$: 置换群集合. $a_i$: 置换群中的第 $i$ 个置换. $D(a_i)$: 进行 $a_i$ 这个置换, 状态不会变化的方案 数量. 该引理与下方内容没有太大关系, 可以暂时忽略. ___ $Problem$ 链接 有 $N$ 个石子围成一圈, 使用 $M$ 种颜色染色, 求有多少种本质不同的方案. 借此问题引入 $Polya定理$ $↓$ $Polya定理$ $$L=\frac{1}{|G|}\sum_{i=1}^{|G|}M^{C(g_i)}$$ 先丢出公式. 这道题的 置换群 $G$: 转$0$次, 转$1$次 ...转 $N-1$ 次, (皆为顺时针转动). 若满足旋转 $k$ 个位置, 状态和原来相同, 那么 $i$ 位置颜色 等于 $(i+k)%N$ 位置颜色, 旋转 $t$ 次, 仍和原来位置相同, 即 $i$ 位置与 $(i+t k)%N$ 位置颜色相同, 则 $i$ 旋转 $t$ 个 $k$ 次, 一定能回到原来位置, 即可以无限旋转, 所以 $i$ 就与 所有 $(i+t k)%N$ 位置呈现一个封闭的 $\color{red}{循环节

Polya 定理入门[Burnside引理,Polya定理,欧拉函数]

本秂侑毒 提交于 2019-11-28 10:02:55
$这篇blog重点讨论Polya的应用, 更详细的证明请百度 .$ ___ $Burnside引理$ $$L=\frac{1}{|G|}\sum_{i=1}^{|G|}D(a_i)$$ $L$: 本质不同的方案数. $G$: 置换群集合. $a_i$: 置换群中的第 $i$ 个置换. $D(a_i)$: 进行 $a_i$ 这个置换, 状态不会变化的方案 数量. 该引理与下方内容没有太大关系, 可以暂时忽略. ___ $Problem$ 链接 有 $N$ 个石子围成一圈, 使用 $M$ 种颜色染色, 求有多少种本质不同的方案. 借此问题引入 $Polya定理$ $↓$ $Polya定理$ $$L=\frac{1}{|G|}\sum_{i=1}^{|G|}M^{C(g_i)}$$ 先丢出公式. 这道题的 置换群 $G$: 转$0$次, 转$1$次 ...转 $N-1$ 次, (皆为顺时针转动). 若满足旋转 $k$ 个位置, 状态和原来相同, 那么 $i$ 位置颜色 等于 $(i+k)%N$ 位置颜色, 旋转 $t$ 次, 仍和原来位置相同, 即 $i$ 位置与 $(i+t k)%N$ 位置颜色相同, 则 $i$ 旋转 $t$ 个 $k$ 次, 一定能回到原来位置, 即可以无限旋转, 所以 $i$ 就与 所有 $(i+t k)%N$ 位置呈现一个封闭的 $\color{red}{循环节

[HEOI2016/TJOI2016] 求和

限于喜欢 提交于 2019-11-27 21:51:34
有关斯特林数的介绍和斯特林反演: 斯特林数及斯特林反演 。 本来是想做容斥的,结果发现了一个多项式题目…… 不过容斥和反演息息相关嘛。 这题做完之后感觉卷积也不是那么难,就把它理解成一个预处理一个复杂函数的方法就好了。这样复杂度可以从 \(O(n)\) 求和式变成 \(O(1)\) 取得函数值了。 这道题目是有关第二类斯特林数的,上文的博客中推导了第二类斯特林数的一个公式: \(\begin{aligned} S(n, m) = \frac{1}{m!} \sum_{k = 0}^m (-1)^k C(m, k) (m - k)^n \\ = \sum_{k = 0}^m \frac{(-1)^k (m - k)^n}{k!(m - k)!} \end{aligned}\) 发现上式是个卷积形式,于是本题的柿子可以这样推导(后两步好神仙啊): \(\begin{aligned} F(n) =\sum_{i=0}^n \sum_{j=0}^i S(i, j) * 2^j * j! \\ =\sum_{i=0}^n \sum_{j=0}^n S(i, j) * 2^j*j! \\ =\sum_{j=0}^n 2^j*j!\sum_{i=0}^n S(i, j) \\ =\sum_{j=0}^n 2^j*j!\sum_{i=0}^n \sum_{k=0}^j\frac{(-1)^k}{k

UOJ62 怎样跑得更快

只愿长相守 提交于 2019-11-27 15:53:20
怎样跑得更快 大力水手问禅师:“大师,我觉得我光有力气是不够的。比如我吃菠菜可以让力气更大,但是却没有提升跑步的速度。请问怎样才能跑得更快?我试过吃白菜,没有效果。” 禅师浅笑,答:“方法很简单,不过若想我教你,你先看看这道UOJ Round的C题。” 令 \(p = 998244353\) ( \(7 \times 17 \times 2^{23} + 1\) ,一个质数)。 给你整数 \(n, c, d\) 。现在有整数 \(x_1, \dots, x_n\) 和 \(b_1, \dots, b_n\) 满足 \(0 \leq x_1, \dots, x_n, b_1, \dots, b_n < p\) ,且对于 \(1 \leq i \leq n\) 满足: \[ \begin{equation} \sum_{j = 1}^{n} \gcd(i, j)^c \cdot \text{lcm}(i, j)^d \cdot x_j \equiv b_i \pmod{p} \end{equation} \] 其中 \(v \equiv u \pmod{p}\) 表示 \(v\) 和 \(u\) 除以 \(p\) 的余数相等。 \(\gcd(i, j)\) 表示 \(i\) 和 \(j\) 的最大公约数, \(\text{lcm}(i, j)\) 表示 \(i\) 和 \(j\)

数论学习笔记

戏子无情 提交于 2019-11-27 13:53:56
记录平时遇到的一些知识点。 原根 阶 :设 \(a,p\) 是整数且互质,那么满足 \(a^n=1\mod p\) 的最小整数 \(n\) 就称为 \(a\) 模 \(p\) 的阶。 原根 :当 \(a\) 模 \(m\) 的阶为 \(\varphi(m)\) 时,就称 \(a\) 为模 \(m\) 的一个原根。 性质 :假设 \(g\) 为模 \(m\) 的一个原根,那么满足 \(g^1,g^2,\cdots,g^{p-1}\) 模 \(m\) 的结果两两不相同。 模 \(m\) 有原根的充要条件: \(m=2,4,p^a,p^{2a}\) , \(p\) 为奇素数。 快速求原根:得到 \(m-1\) 的所有质因子 \(p_1,p_2,\cdots,p_k\) ,从小到达枚举 \(i\) ,若满足 \(i^\frac{m-1}{p_j}\mod m =1\) ,则 \(i\) 不为原根。证明可通过裴蜀定理来证明,详见: 传送门 二次剩余 定义 :若存在一个 \(x\) ,满足 \(x^2=d\mod p\) ,则称 \(d\) 为模 \(p\) 的二次剩余。 勒让德记号 : \(\big(\frac{a}{p}\big)\) ,表示 \(a^\frac{p-1}{2}\) 。 欧拉准则 : \[ \left(\frac{a}{p}\right) \equiv \left\{

取余运算

最后都变了- 提交于 2019-11-27 11:26:47
目录 关于取余运算 关于取余运算 两个数 n d 进行取余,记为: n % d (d !== 0). 对于结果 r 的正负性,可以规定为,与 n 的符号一致. 见下面的mod函数. console.log('-12%5:',-12%5); console.log('12%-5:',12%-5); console.log('7%-3:',7%-3); // console.log('3%0',3%0); console.log('-12%-5',-12%-5); function _pos_mod(n,d) { if(n < 0 || d < 0){ throw new Error(`n:${n} or d:${d} 应该 >= 0`); } if(d === 0){ throw new Error('不能对0取余'); } if(n < d){ return n; } return _pos_mod(n - d,d); } function abs(x){ if(x >= 0){ return x; } return -x; } function mod(n,d){ // 正数取余 结果 >= 0 // 负数取余 结果 <= 0 // 正负取余 结果 >= 0 // 负正取余 结果 <= 0 // 正负性 取决于第一个数 if(n >= 0){ return _pos_mod(n

Codeforces D. The Sum of the k-th Powers(拉格朗日插值)

戏子无情 提交于 2019-11-27 05:56:39
题目描述: The Sum of the k-th Powers time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output There are well-known formulas: , , . Also mathematicians found similar formulas for higher degrees. Find the value of the sum modulo 109 + 7 (so you should find the remainder after dividing the answer by the value 109 + 7). Input The only line contains two integers n ,  k (1 ≤  n  ≤ 109, 0 ≤  k  ≤ 106). Output Print the only integer a — the remainder after dividing the value of the sum by the value 109 + 7. Examples Input Copy 4 1 Output Copy 10 Input