[noip模拟]种花<快速幂+结论>】的更多相关文章

描述: OI太可怕了,我决定回家种田.我在后院里开辟了一块圆形的花圃,准备种花.种花是一种艺术,通过一定技术手法,花材的排列组合会让花变得更加的赏心悦目,这就是花艺.当然你知道,我在种田之前是OIer,所以我不懂花艺,只会排列组合.我把花圃从圆心向外画线,分成了N块扇形,分别编号为1,2,3.....N,再从村里的商店采购了M种花.然后我大胆的决定:花圃中的每块只种M种花中的一种,相邻的两块不能种同一种花.我反应比较慢,所以我请来了机房里手速最快的强袭黯灭勋章鱼人守卫来帮我,让他试一下每种排列,…
传送门 首先按照题意构造出转移矩阵. 然后可以矩阵快速幂求出答案. 但是直接做是O(n3qlogm)O(n^3qlogm)O(n3qlogm)的会TTT掉. 观察要求的东西发现我们只关系一行的答案. 于是倍增预处理出logloglog个矩阵每次变成O(n2)O(n^2)O(n2)转移. 代码…
传送门 不得不说神仙出题人DZYODZYODZYO出的题是真的妙. f[i][j][k]f[i][j][k]f[i][j][k]表示选的硬币最大面值为iii最小面值不小于jjj,总面值为kkk时的选法总数. 然后有f[i][l][k1+k2]=∑f[i][j][k1]∗f[j][l][k2]f[i][l][k1+k2]=\sum f[i][j][k1]*f[j][l][k2]f[i][l][k1+k2]=∑f[i][j][k1]∗f[j][l][k2] 这不就是矩阵乘法吗? 上快速幂优化就行了.…
传送门 签到题.(考试的时候写挂爆0) 令AiA_iAi​表示邻接矩阵的iii次幂. 于是就是求Al+Al+1+...+ArA_l+A_{l+1}+...+A_rAl​+Al+1​+...+Ar​. 然而快速幂200次会挂掉. 因此我们把其变成Al∗(A0+...+Ar−l)A_l*(A_0+...+A_{r-l})Al​∗(A0​+...+Ar−l​) 后面的直接预处理,这样一次快速幂+一次矩阵乘法就行了. 代码…
[输入] 一行两个整数 n P [输出] 从小到大输出可能的 k,若不存在,输出 None [样例输入 1] 5 5 [样例输出] 2 [样例解释] f[0] = 2 f[1] = 2 f[2] = 4 f[3] = 6 mod 5 = 1 f[4] = 5 mod 5 = 0 f[5] = 1 30%的数据保证 n, P ≤ 1000 100%的数据保证 n, P ≤ 10^9 一道算是比较综合的数论题吧,感觉不是很难. 先用矩阵快速幂求出k=1时f[n]的值. 然后解一个k*f[n]+x*p…
目录: 1:一道简单题[树形问题](Bzoj 1827 奶牛大集会) 2:一道更简单题[矩阵乘法][快速幂] 3:最简单题[技巧] 话说这些题目的名字也是够了.... 题目: 1.一道简单题 时间1s 题目描述 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1<=N<=100,000) 个农场中的一个,这些农场由N-1条道路连接,并且从任意一个农场都能够到达另外一个农场.道路i连接农场A_i和B_i…
题目链接:https://ac.nowcoder.com/acm/contest/548/B 题意:计算m/n小数点后k1位到k2位,1≤m≤n≤109,1<=k1<=k2<=109,0<=k2-k1<=105,T<=20. 思路:计算小数可以模拟除法一位一位地算,但需要把k1之前的计算出来,不然没法计算k1到k2的,看到数据范围1<=k1<=k2<=109,0<=k2-k1<=105,全部模拟的话肯定会超时,k1之前的是不能直接算,计算结…
Solution $jzy$大佬用了给的原根的信息,加上矩阵快速幂150行QAQ 然而$yuli$大佬的做法不仅好懂,代码只有50行! 快速幂的思想,把m看成要组成的区间总长度,每次将两段组合得到新的长度. 定义$g[i]$表示当前x为$i$时的方案数,用来最后计算期望,在快速幂中相当于ans,定义$f[i]$代表a,是初始要用来组合的长度为1的方案,再用一个辅助数组转移即可. Code #include<bits/stdc++.h> #define MOD 1000000007 #defin…
描述 形如2^P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有909526位.麦森数有许多重要应用,它与完全数密切相关. 任务:从文件中输入P(1000<P<3100000),计算2^P-1的位数和最后500位数字(用十进制高精度数表示) 输入 文件中只包含一个整数P(1000<P<3100000) 输出 第一行:十进制高精度数2^P-1的位数.…
\(a ^ n \bmod p\) \(a, p, n \leq 10^9\) 最普通的二进制拆分 #define LL long long LL qpow(LL a, LL n, LL p) { LL ans = 1; for (; n; n >>= 1, a = a * a % p) if (n & 1) ans = ans * a % p; return ans % p; } \(a, p, n \leq 10^{14}\) 底数变大了,直接做\(a * a\)会爆longlon…