![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
最菜的acmer
这个作者很懒,什么都没留下…
展开
-
LightOJ - 1259数论基础
题目链接用素数筛选法选素数,记得用bool类型的来赛选否则空间不够用#include#include#includetypedef long long int ll;const int mx = 1e7;int prime[mx/10+5];bool vis[mx+5];int len = 0;void init(){ vis[1] = 1; for(int i =原创 2017-05-11 19:57:12 · 255 阅读 · 0 评论 -
第十四届浙江财经大学程序设计竞赛重现赛B-数论
题意:让你根据公式l到r取模k的累乘,根据辗转相除法,可得如果a>k的话 gcd(a,k) = gcd(a%k,k)那么f(a,k)%k = f(a%k,k)%k了然后我们先暴力求出1~k的f(a,k)的累乘ret,假设我们求l到r里面有m个取余k相当于1~k的区间然后这个区间的答案就是ret^m%k,接着我们还剩下l%k~k-1还有1~r%k这段区间的f(a,k)没算上去,因为k最大就10...原创 2018-03-27 21:03:00 · 126 阅读 · 0 评论 -
ZOJ - 4006(数论逆元)
题解: 求从0点向m走i步那么就得返回i- m步最后原地停留了n+m-2*i步最后用排列组合就是c[n][i]*c[n-i][i-m]*A*B*CA,B,C分别表示走了i步,i-m步,n+m-2*i步的概率C[n][i] = n!/i!/(n-i)!因为要取膜求一下逆元最后枚举所有可能的i即可#include<iostream>#include<cstring>#inc...原创 2018-03-13 23:20:49 · 523 阅读 · 0 评论 -
牛客练习赛13
A:找一下4的个数还是7的个数多,如果7多就输出7否则输入4,两者都没有就输出-1#include<iostream>#include<cstring>#include<algorithm>#include<queue>#include<vector>#include<cstdio>#include<cmat...原创 2018-03-18 19:08:04 · 147 阅读 · 0 评论 -
UVa 10213 How Many Pieces of Land (欧拉定理)
题解:根据欧拉定理V+F-E = 2,V是点数,E是边数,F是面数欧拉公式V−E+F=2所以找出顶点数和边数就行了,枚举两个点,在左半边的如果有i个,右边有n−i−2个,交点个数i∗(n−i−2),然后这条线段被分成了i∗(n−i−2)+1部分,然后外围凸包上的边有n条,圆弧分成了n段,所以V,E就能算出来了。V=n+n4∑i=1n−3i(n−2−i)因为经过交点的有两条线会被原创 2017-12-24 23:58:22 · 340 阅读 · 0 评论 -
fjnu1233(dp+逆元)
题解:因为操作n次,然后最终长度为s的长度len,那么我们可以暴力求出不管是否跟s一模一样只要长度一样然后求出这样的方案数除以2^len即可转移方程dp[i][j]的方程就是 当j不为0时候dp[i][j] = 2*dp[i-1][j-1]+dp[i-1][j+1],当j为0时就是dp[i][j] = dp[i-1][j]+dp[i-1][j+1]即可,题目要求我们取膜所以我们要求逆元然后乘以原创 2017-11-26 23:21:03 · 206 阅读 · 0 评论 -
LightOJ - 1138 (二分)
题意:求满足N!包含q个0的最小值题解:因为N!里面2出现的频率比5多所以只要求出N!中可以拆出几个5即可最后二分n求解出n+1刚好大于等于Q即可#include#include#include#includeusing namespace std;int n;bool check(int mid){ int ans = 0; while(mid){原创 2017-10-22 22:18:15 · 268 阅读 · 0 评论 -
UVA - 11754(中国剩余定理+枚举)
题意:给你C行,每行一个x然后k个与之对应的集合,然后求出n%任意x存在一个y与之对应最小的s个数题解:如果总集合的个数相乘#include#include#include#include#include#include#includeusing namespace std;typedef long long int ll;const int mx = 105;int原创 2017-10-22 22:12:59 · 435 阅读 · 0 评论 -
hdu6169-(容斥原理)
题解:如果k不是质数肯定不是最小除数,如果k是质数的话,那么就是k的倍数的那么些数,但是其中一些数最小除数不是k的话那么就是那些k和比k小的质数配的数但是这些数可能会重复那么就得用容斥原理做。 质数的话只要打到根号1e11即可,因为大于根号的话不会出现两个大于根号1e11的质数配的情况。最后注意一下在一些可能越界的情况下取余即可#include<iostream>#include<cstring原创 2017-08-23 19:12:10 · 651 阅读 · 2 评论 -
hdu6053-莫比乌斯反演
题解:这里用莫比乌斯反演里面一个函数,它的定义如下: (1)若,那么 (2)若,均为互异素数,那么 (3)其它情况下因为取A数组中的最小值,然取比他小所有的素数然后每个素数贡献的答案就是所有的A[i]/p(p是素数)相乘起来然后总和,当然这其中会有重复的要用到容斥,重复的就是这些的素数的可以组成的公倍数然后可以用莫比乌斯反演来原创 2017-08-11 23:35:26 · 213 阅读 · 0 评论 -
hdu6134-(莫比乌斯反演)
题解:设f[i]为1-i所有的数被i除后向下取整总和,F[i]为1-i所有数被i除以后向上取整的总和最后满足一个关系:F[i] = f[i-1]+i;f[i] = F[i]-i+cnt(cnt为i因子个数)这里我让f[i] = F[i]重复使用F[i] = F[i] - F[i/p]{p是i的所有质数因子}那么这里如果多个质数可能重复减了了好几次那么这里就要用容斥原原创 2017-08-17 19:07:46 · 1030 阅读 · 0 评论 -
hdu6129-( Lucas定理)
题解:你考虑执行了m次后,每个值对后面的贡献的次数然后你会得到一个斜着的永辉三角,那么位置j减去i个单位的位置后j-i的值对后面的贡献为C(m-1+j-i,j-i),最后根据Lucas定理,如果m-1+j-i的二进制每个位数都大于等于j-i的个数那么C(m-1+j-i,j-i)的答案是奇数否则是偶数,如果是偶数的话相当于没有异或,如果是奇数就相当于异或了一次然后枚举每个j-i的长度即可#includ原创 2017-08-17 09:58:16 · 323 阅读 · 0 评论 -
LightOJ - 1356 质因数分解+最大独立子集
题解思路:因为题目说有一个数除以另外一个数如果等于一个素数的话就只能一个加入集合,那么这两个数矛盾并且可以构成一个二分图,就是求二分图的最大独立子集,然后如何快速的求这些数相互矛盾呢? 把这些数拆分成看有多少个不同的素数并且除以素数,然后看下有没有在出现过,如果有就两个位置上加入一条无向边即可。最后就是跑一遍HK就可以了。#include<iostream>#include<cstring>#原创 2017-08-09 15:08:10 · 410 阅读 · 0 评论 -
codeforces451E容斥原理加lucas
干这题需要用到数学排列组合的思想假设每个花瓶里面的花无限支,然后再排除那些花瓶超出限制的个数,然后根据lucas的公式就是求C(n,m)%p= lucas(n,m)=C(n%p,m%p)*lucas(n/p,m/p)%p,求C(n,m)%p 因为p = 1e9+7是一个素数所以可以根据费马小定理就是C(n,m)%p = n*(n-1)*(n-2)*....(n-m+1)*(1*2*...*m)原创 2017-04-27 23:05:46 · 265 阅读 · 0 评论 -
LightOJ - 1370 欧拉函数的应用
题目大意:就是给你n个数然后求欧拉函数值大于等于他最小的x总和加起来是多少直接用类似筛选的方法打表然后求解题目数据是1-1e6那么你打表至少要打到1e6+3否则等下会WA这就很僵硬了题目链接#include#include#include#includetypedef long long int ll;const ll mx = 1e6+5;ll phi[mx+5]原创 2017-05-12 15:14:55 · 363 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第一场)F
题解:这里我们可以得知最后结果与a[i]摆放的位置顺序无关。那么假设我大于等于x的a有n个,小于x的有m个并且他们的积为y,那么我们得到x的方案数(不算y)再乘以x就是我们接着可以把上面式子转化为x*(x^n-(x-1)^n),然后因为a很大我们不可能枚举每点的x所以我们可以将大于等于某个数个数一样的合起来一起算那么假设区间长度是a~b那么我们可以大于他们的个数都是n个那么我们可以...原创 2018-07-20 13:00:22 · 287 阅读 · 0 评论