
ACM-数论
文章平均质量分 67
但求-_-心安
充满鲜花的世界到底在那里,如果他真的存在那么我一定会去。
展开
-
poj 1576 A/B
A=B*x1;n=A%9973=A-9973*y1,则n=B*x1-9973*y1;因为 gcd(B,9973)= 1 = B*X+9973Y; 两边*n ,得 n=B*X*n+9973*Y*n;所以x1=X*n欧几里德原理好奇妙,可以解决好多问题,数学真神奇#include#includeconst int k=9973;/*根据朴素的欧几里德原理有 gcd原创 2016-10-09 20:27:18 · 436 阅读 · 0 评论 -
HDU 5976 Detachment
#include#include #include #includeusing namespace std;const long long mod=1000000007;long long k,a[100000],sum[100000];/*和正确答案对比了几百组数据,思路也是对的,不知道为啥wa了,恶心死了*/void init(){ k=0; a[0]=0原创 2017-05-01 19:19:41 · 363 阅读 · 0 评论 -
POJ 1061 青蛙的约会 (扩展欧几里得)
扩展欧几里得算法在理解,第一次学的时候不是很深刻,没做到真正的知行合一(最近比较崇拜王阳明)扩展欧几里得就是求ax+by=gcd(a,b)的解,而且这个解一定会存在。b=0,x=1;a>b>0 时设 ax1+ by1= gcd(a,b);bx2+ (a mod b)y2= gcd(b,a mod b);根据朴素的欧几里德原理有 gcd(a,b) = gcd(b,a mod原创 2016-10-31 19:39:00 · 517 阅读 · 0 评论 -
POJ2891 Strange Way to Express Integers(中国剩余定理)
#include #include #define ll long longusing namespace std;long long a[150000],b[150000];long long gcd(long long a,long long b){ return b==0?a:gcd(b,a%b);}long long ex_gcd(long long a,long原创 2017-08-02 13:45:43 · 270 阅读 · 0 评论 -
poj 3904 Sky Code(莫比乌斯函数)
莫比乌斯函数,把所有的是i的倍数的数;num[i]如果大于四个就用C(4,num[i])*mu[i]就是答案#include #include #include #define ll long longusing namespace std;const int MAX=11000;int mu[MAX],n,max1;int cnt[MAX];int num[MAX];voi原创 2017-08-02 15:03:55 · 489 阅读 · 0 评论 -
HDU 6053 TrickGCD(莫比乌斯函数)
题意:给出数组 AA ,问有多个种 BB 数组满足所给条件。思路设 gcd(b1,...bn) = k (k >= 2),此时 k 对答案的贡献为 (a1/k)*(a2/k)*(a3/k)*...*(an/k) 根据容斥原理,ans = +[k=一个素数之积 时对答案的贡献] -[k=两个素数之积 时对答案的贡献] +[k=三个素数之积 时对答案的贡献]原创 2017-07-28 15:54:16 · 289 阅读 · 0 评论 -
zboj 2301 Problem b (莫比乌斯反演)
Description对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。Input第一行一个整数n,接下来n行每行五个整数,分别表示a、b、c、d、k Output共n行,每行一个整数表示满足要求的数对(x,y)的个数 Sample In原创 2017-08-22 11:44:48 · 424 阅读 · 0 评论 -
51nod 1256 乘法逆元
费马小定理,我好像一开始只看了皮毛,只看了简单的乘法逆元,因为一般的都是x^p=x(mod p)p是素数。如果p不是素数应该怎么办?欧拉定理可以解决这个问题,假设m=p1^e1*p2^e2...pn^en.x^h(m)=1(mod p).数学符号打不出来,想看详细的去百度吧。#include using namespace std;long long n,m;long long eule原创 2017-10-10 11:20:56 · 224 阅读 · 0 评论 -
51nod 1829 函数
flag既然立上了,今天时间不算少,如果坏了规矩,以后就没法搞了,所以,最后一题。题意有点难理解,容斥原理。#include#define LL long longusing namespace std;const int maxn=1000005,tt=1e9+7;LL ji[maxn],ans=0;int n,m,p;LL qsm(LL w,int b){ LL n原创 2017-11-02 21:58:25 · 280 阅读 · 0 评论 -
poj 2891 Strange Way to Express Integers(中国剩余定理)
开始的忘了,又看了一个版本的,[衰]转载:/**********************一般模线性方程组***********************/同样是求这个东西。。X mod m1=r1X mod m2=r2.........X mod mn=rn首先,我们看两个式子的情况X mod m1=r1……………………………………………………原创 2017-04-17 20:46:52 · 304 阅读 · 0 评论 -
poj 2115 C Looooops
x=[(B-A+2^k)%2^k] /C即 Cx=(B-A)(mod 2^k) 此方程为 模线性方程,本题就是求X的值。复习扩展欧几里得方程#include#include using namespace std;//d=ax+by,其中最大公约数d=gcd(a,n),x、y为方程系数,返回值为d、x、y__int64 EXTENDED_EUCLID(__int6原创 2017-02-06 20:59:25 · 236 阅读 · 0 评论 -
hdu5902 GCD is Funny
神坑巨坑,开始看题以为两两的最大公约数就对了,错了好多以后,重看了下英文题,原谅我的英语水平太高。看着别人的解释看懂了,对两两最大公约数的产生的数也要加入,共进行n-2次开始那一次找最大公约数算一次,接着再来n-3 次。哇哇哇,哇咔咔。#include#include#include#includeusing namespace std;const int maxn=510;原创 2016-10-11 12:36:43 · 388 阅读 · 0 评论 -
2016百度之星资格赛 Problem A
求从ai乘到aj的值mod 9973和从a1乘到aj 除以从a1乘到a(i-1)mod 9973效果是一样的由于数太大每次乘ai都要mod 9973 要使用上面的方法就要用到乘法逆元;我用的这个是费马小定理推出的乘法逆元,费马小定理就问度娘吧,超详解,费马小定理最容易看懂了。最近学了数论好多东西,有点乱,我就不解释费马小定理了,写完这篇文章捋一捋思路我直接用strlen(s)竟然超原创 2016-10-11 13:39:52 · 315 阅读 · 0 评论 -
数学小结
学习了一个多周的数论和组合数学,脑子好乱的一片,不知道自己到底学了些什么。总结下来,让自己理清头绪,也为了自己以后忘了回头看看好看到自己学了什么。也希望能帮助那些刚开始学习数论的同学。说实话从百度百科上看了好长时间才看懂下面这些。组合数学:1.组合公式:C(M,N)=C(M-1,N-1)+C(M-1,N);打表代码://a[n][m]表示C(n,m),最后打出a[n][m]原创 2016-10-11 18:15:07 · 542 阅读 · 0 评论 -
HDU 1695 GCD
用f(i)表示gcd为i的数对有多少,用F(i)表示gcd为i的倍数的数有多少,莫比乌兹反演就是一个公式,如果符合这个公式,才能用。F[i]一半来说非常好求,一半都是用容斥原理容易超时用这个#include #include #include #define ll long longusing namespace std;const int MAXN = 150000;原创 2016-11-03 20:54:55 · 335 阅读 · 0 评论 -
Saving Beans (Lucas定理)
#include #include #include #include #define ll long longusing namespace std;//题意为:将不超过m个豆子放在n棵不同的树上,一共有多少种方法。//用乘法逆元,乘法逆元两个周就忘没了,就是一个数m和p互质//m的逆元就是m(p-2)因为m^(p-1)%p=1%p (费马小定理),有熟练了逆元//看了烟大一大原创 2016-10-26 18:37:28 · 894 阅读 · 1 评论 -
hdu 4372 Count the Buildings (Stirling数)
#include#include#include#include#includeusing namespace std;/*最高的那个楼左边一定有x-1个组,右边一定有y-1个组,且每组是一个环排列,这就引出了第一类Stirling数(n个人分成k组,每组内再按特定顺序围圈的分组方法的数目)。我们可以先把n-1个元素分成x-1+y-1组,然后每组内部做环排列。再在所有组中选取x-原创 2016-10-26 20:26:46 · 430 阅读 · 0 评论 -
hdu 1808 alloween treats (鸽巢原理)
#include #include #include using namespace std; const int maxn = 100000 + 10; int mod[maxn], fl[maxn], c, n; long long sum[maxn]; int main() { while(scanf("%d %d", &c, &n))原创 2016-10-27 17:38:20 · 413 阅读 · 0 评论 -
hdu 1573 X问题 (中国剩余定理)
#include #include #define ll long longusing namespace std;long long a[15],b[15];long long gcd(long long a,long long b){ return b==0?a:gcd(b,a%b);}long long ex_gcd(long long a,long long b,原创 2016-11-02 20:03:33 · 442 阅读 · 0 评论 -
HDU6274&&2017CCPC杭州K Master of Sequence
问题 K: Master of Sequence时间限制:10 Sec内存限制:128 MB提交:97解决:31[提交] [状态] [命题人:admin]题目描述There are two sequences a1,a2,...,an , b1,b2,...,bn . Let. There are m operations within three kinds a...原创 2019-04-06 10:53:07 · 260 阅读 · 0 评论