
数论
Dilly__dally
这个作者很懒,什么都没留下…
展开
-
lightoj 1341
思路:唯一分解定理#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long long#define fo freopen("in.txt","r",stdin)#define fc fclose(stdin)#define fu0(i,n) for(i=0;i<n;...原创 2018-06-12 20:57:58 · 371 阅读 · 1 评论 -
HDU 6441(费马大定理+奇偶数列法)
思路:由费马大定理知a^n+b^n=c^n当n>2时无整数解,所以n==0和n>2时输出-1 -1,n==1时输出1,a+1,n==2时,由奇偶数列法(https://blog.youkuaiyun.com/Dilly__dally/article/details/82081922)知a为奇数时,b=n*n+(n+1)*(n+1)-1,c=b+1;a为偶数时,b=n*n,c=b+2 求解 ...原创 2018-08-26 16:42:03 · 418 阅读 · 0 评论 -
ACM数论之费马小定理
费马小定理(Fermat's little theorem)是数论中的一个重要定理,在1636年提出,其内容为: 假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p),例如:假如a是整数,p是质数,则a,p显然互质(即两者只有一个公约数1),那么我们可以得到费马小定理的一个特例,即当p为质数时候, a^(p-1)≡1(mod p)。...原创 2018-08-26 17:28:46 · 825 阅读 · 0 评论 -
HDU 6440(费马小定理)
m^p≡mmodp,n^p≡nmodp,所以m^p+n^p≡(m+n)modp#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=200005;const double eps=1e-8;const double PI...原创 2018-08-26 17:47:34 · 213 阅读 · 0 评论 -
【模板】线性筛
本文只讲素数筛。#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long longconst int maxn=200005;const double eps=1e-8;const double PI = acos(-1.0);#define lowbit(x) ...原创 2018-09-02 11:20:45 · 704 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 J(线性筛+找规律)
题意:思路:找到规律,当i为素数时,f[i]=2;当i不是素数时,若i有一个因子的次数是3或以上,那么f[i]=0。再来看线性筛,本质是筛掉最小质因子,如果i不能整除prime[j],那么f[i*prime[j]]=f[i]*2。#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#defin...原创 2018-09-02 23:39:50 · 157 阅读 · 0 评论 -
牛客练习赛25 因数个数和(贡献法)
题意:q次询问,每次给一个x,问1到x的因数个数的和。思路:考虑1到x的数的因子为1有x/1,因子为2有x/2,……,所以要求的就是,因为数据是1e9,这样写绝对超时。我们换一个角度,相等的因子个数应该在某个特定的区间出现,比如x=12,有1 ,1 2,1 3,1 2 4,15,1 2 3 6,17,1 2 4 8,1 3 9,1 2 5 10,1 11,1 2 3 4 6 12。对应的因子个...原创 2018-09-18 16:58:52 · 232 阅读 · 0 评论 -
【模板】数论之因子数问题
目前有如下问题:N的正因数个数N的全体正因数之和求1到n的因子和的和求1到n的因子个数的和具体参考https://blog.youkuaiyun.com/Hpuer_Random/article/details/81229214...原创 2018-09-18 17:08:14 · 271 阅读 · 0 评论 -
ACM入门之数学
一、数论1.唯一分解定理:题目:[lightoj1341](https://vjudge.net/contest/234388#problem/G),题解:点击打开链接[POJ1730](https://vjudge.net/contest/234388#problem/F)题解:点击打开链接2.Eratosthenes筛法:埃氏筛素数:int m=sq...原创 2018-09-19 10:08:35 · 432 阅读 · 0 评论 -
【模板】莫比乌斯函数
#include<bits/stdc++.h>using namespace std;const int MAXN = 1000000;bool check[MAXN+10];int prime[MAXN+10];int mu[MAXN+10];void Mobius(){ memset(check,false,sizeof(check)); mu[1]...原创 2018-09-24 11:19:45 · 346 阅读 · 0 评论 -
【模板】逆元
扩欧法: ll kgcd(ll a,ll b,ll &x,ll &y)//扩欧{ if(!b) { x=1;y=0;return a; } ll t=kgcd(g,a%b,y,x); y-=a/b*x; return t;}ll niyuan(ll a,ll p){ ll x,y; kgc...原创 2018-07-16 11:36:47 · 239 阅读 · 0 评论 -
Wannafly挑战赛25 A 因子(n!中p的个数)
题意:链接:https://www.nowcoder.com/acm/contest/197/A来源:牛客网令 X = n!, 给定一大于1的正整数p 求一个k使得 p ^k | X 并且 p ^(k + 1) 不是X的因子。思路:转化成求X含多少p,p可以分解成2^a*3^b*……,就可以转化成求X里2的个数,2的个数……,比如样例2的n=10000 p=12,那么p=2^2*3,然后看...原创 2018-10-18 20:59:59 · 201 阅读 · 0 评论 -
Wannafly挑战赛25 C期望操作数 (dp+逆元)
题意:链接:https://www.nowcoder.com/acm/contest/197/C来源:牛客网Nqijij 有一个数x,和一个神秘权值 q, 满足 x <= q, 每一次nqijij会随机x 变成 [x, q] 中的一个随机数,nqijij想要知道期望多少次操作之后x 变为q。由于nqijij 是一个精力充沛的人,所以他总共会选择 T 次x 和q 进行操作,对于每一次操作...原创 2018-10-18 21:35:26 · 256 阅读 · 0 评论 -
奇偶数列法则
定理: 如a^2+b^2=c^2是直角三角形的三个整数边长,则必有如下a值的奇数列、偶数列关系成立; (一) 直角三角形a^2+b^2=c^2奇数列a法则: 若a表为2n+1型奇数(n=1、2、3 …), 则a为奇数列平方整数解的关系是: a=2n+1 { b= n^2+(n+1)^2-1 c= n^2+(n+1)^2 证:由勾股弦定理,若abc为直角三...原创 2018-08-26 16:39:49 · 1985 阅读 · 0 评论 -
SGU 106 扩展欧几里得
题意:求有多少对(x,y)满足x在x1~x2,y在y1~y2里使方程ax+by+c=0方法:c取相反数,然后扩欧解得x,y,再x*=c/d,y*=c/d求得一组解,计算x、y的改变量,x=b/d,y=a/d*-1。根据 x1<=x+k*dx<=x2,解得x1-x<=kdx<=x2-x,判断dx的正负再两边分别除以dx,左边向上取整,右边向下取整,对y进行一样的操作,最后取x...原创 2018-07-14 17:20:29 · 204 阅读 · 0 评论 -
UVA 10871 米勒测试或筛选试除法
题意:给出一个长度为n的正整数序列,一个素序列是一个长度至少为2的连续的子序列,总和是大于或等于2的一个素数。例如给出3 5 6 3 8,存在两个长度为2的素序列(5+6=11,3+8=11),输出最短的序列长度和元素。方法:米勒拉宾测试素数或者线性筛+试除法,然后枚举长度和首指针,计算j~j+i-1个整数的和(前缀和)#include<bits/stdc++.h>using nam...原创 2018-07-14 15:14:46 · 425 阅读 · 0 评论 -
poj 1730
思路:根据唯一分解定理拆成素数乘积,然后求每一个素数幂次的最大公约数即为p的值。注意x为负数的时候要先把最大公约数一直除以2直到其为奇数。...原创 2018-06-13 00:30:20 · 351 阅读 · 0 评论 -
POJ 2115
思路:构造模线性方程,然后用扩欧求解。方程:(x*c+a)%2^k=b 所以 x*c-y*2^k=b-a ,套ax+by=c,然后扩欧。注意:我开始写b=-2^k然后WA成狗,后来改成2^k AC了 。b没必要是负的,反正正负a和b的线性组合集都一样,况且此题不需要y。#include<cstdio>#include<cstring>#include<algori...原创 2018-06-13 19:56:10 · 243 阅读 · 0 评论 -
UVA 11582
思路:直接暴力肯定会超时,先用快速幂计算出a^b%n的值,因为mod为n时最多有n种余数,而且f[i]由前两项决定,所以周期至多为n*n,当f[i]==f[1]&&f[i-1]==f[0]时可以找到周期。注意:我在每一次进行时用memset初始化f数组结果TLE,去掉后就AC了。。#include<bits/stdc++.h>using namespace std;...原创 2018-06-14 09:45:06 · 472 阅读 · 0 评论 -
UVA 12169
思路: x3=(a(a*x1+b)%10001)+b)%10001a*b+b+y*10001=x3-a*a*x1对应a*x+b*y=c;a=(a+1),b=10001,c=x3-a*a*x1。枚举a的值,扩欧解不定方程解出x。判断该x是否满足整个序列。注意:该题要用long long,不然会运行不出结果。。#include<bits/stdc++.h>using namespace ...原创 2018-06-15 20:29:59 · 195 阅读 · 0 评论 -
UVA 10375 唯一分解定理
题意:求c(m,n)/c(r,s)思路:先对素数打表,构造阶乘的素数,设置一个e数组用来存储素数对应序号i的个数,阶乘作为分子是+1,作为分母是-1,最后计算的时候直接ans*=pow(素数,对应的个数)即可#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long long#...原创 2018-07-09 01:25:52 · 153 阅读 · 0 评论 -
POJ 1006 中国剩余定理
思路:设第x天高峰同时出现,则x≡p(mod23),x≡e(mod28),x≡i(mod33),根据中国剩余定理,求出乘法逆元,直接套公式求和就行了。注意:求和后要减去初始天数d,如果是小于等于0,则要加上m=23*28*33#include<cstdio>#include<cstring>#include<algorithm>#include<io...原创 2018-07-16 13:54:37 · 210 阅读 · 0 评论 -
POJ 2407 (欧拉函数)
直接套欧拉函数模板,链接:欧拉函数#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<vector>#include<stack>#include&l原创 2018-07-16 16:56:36 · 306 阅读 · 0 评论 -
阶和原根
参考大神https://blog.youkuaiyun.com/a27038/article/details/77203892原创 2018-07-16 17:33:31 · 402 阅读 · 0 评论 -
HDU 2588 (欧拉函数)
题意:求满足gcd(x,n)>=m的x的个数,其中,1<=x<=n思路:设s=gcd(x,n),s*a=x,s*b=n,所以a,b互质,所以b的欧拉函数就是a的个数。因为数据很大,所以s从1枚举到根号n,如果s>=m则ans+=phi(n/i),判断s*s是否等于n即如果是完全平方数的时候,只算一遍;如果不是完全平方数,为了计算根号n后面的s,比如6%2=0,则6%3也...原创 2018-07-17 17:55:07 · 330 阅读 · 1 评论 -
莫比乌斯函数模板
const int MAXN = 1000000;bool check[MAXN+10];int prime[MAXN+10];int mu[MAXN+10];void Moblus(){ memset(check,false,sizeof(check)); mu[1] = 1; int tot = 0; for(int i = 2; i <= M...原创 2018-07-18 01:08:40 · 203 阅读 · 0 评论 -
莫比乌斯反演学习(hdu 1695)
公式:1 2 (d|n表示n是d的倍数)莫比乌斯函数:例题:HDU1695题目大意是这样的,给你 a , b , c , d , k 五个值 (题目说明了 你可以认为 a=c=1) x 属于 [1,b] ,y属于[1,d] 让你求有多少对这样的 (x,y)满足gcd(x,y)==k。给你的时间是 3000 MS。 0 < a <= b...原创 2018-07-18 01:40:59 · 251 阅读 · 0 评论 -
UVA 12716 gcd xor
有几个结论:(1)若 a xor b = c,则 a xor c = b。 (2)a - b <= a xor b,(a >= b) (3)若 gcd(a,b)= a xor b = c ,(a >= b),由(2)得:a - b <= c。 再令 a = k1×c,b = k2 × c,(k1 >...原创 2018-07-13 15:54:36 · 245 阅读 · 0 评论 -
2018焦作区域赛 E - Resistors in Parallel (Gym - 102028E) (数学+高精度)
In this physics problem, what we are concerned about are only resistors. If you are poor at physics, do not worry, since solving this problem does not require you to have advanced abilities in physics...原创 2018-12-10 14:40:17 · 2004 阅读 · 2 评论