数论
wym_king
谁终将声震人间,必长久深自缄默;谁终将点燃闪电,必长久如云漂泊。
展开
-
HDU 6108 小C的倍数问题
http://acm.hdu.edu.cn/showproblem.php?pid=6108题意:求小于1e9时有多少个数(设cnt个ans满足)满足:对于每一个数,能整除ans 当且仅当这个数每位之和是ans的倍数; 要求在p进制下题解:这个数是nx1+x2*p+x3*p^2+.......=n n%B==0且要求(x1+x2+x3+.....)%B==0那么--->...原创 2018-08-18 10:16:33 · 111 阅读 · 0 评论 -
uva 11426 欧拉函数的运用
题意: 求 n 以内gcd( i , j ) i < j 的和的个数。n 的欧拉函数值 表示 小于 n 与 n 互质的数的个数。对于互质的两个数 a,b (a<b<=n), gcd(a,b) = 1 是显然的。对 b 而言互质的数有 fai(b) = m个 ,那么b 的贡献就是 m。如果是 2*b呢? 那贡献就是2*m因为将与 b 互质的m个数都乘2, 就得到...原创 2019-07-14 16:00:36 · 143 阅读 · 0 评论 -
POJ 1006 Biorhythms 中国剩余定理 模版
解一系列线性同余方程。x%m1 = a1 ...... x%mn = an 中国剩余定理 模版题。该模版为扩展版,模数不必互质#include<iostream>using namespace std;#define ll long longconst int maxn=1e5+5;const int mod = 21252;int n;ll ex...原创 2019-07-15 14:42:46 · 122 阅读 · 0 评论 -
POJ 2891 中国剩余定理扩展 模版
POJ 2891 扩展欧几里得 扩展中国剩余定理 两篇写的很好x=a1∗x1+b1x=a2∗x2+b2a1,a2是模数,b1,b2是余数。 求x, 模数不互质。#include<iostream>using namespace std;#define ll long longconst int maxn=1e5+5;int n;ll exgcd(ll a,l...原创 2019-07-15 14:51:51 · 108 阅读 · 0 评论 -
青蛙的约会 POJ - 1061 扩展欧几里得解二元一次不定方程
扩展欧几里得解二元一次不定方程两只青蛙,起点分别为x,y ,每次可以跳m,n长度。(同方向跳)在长为 l 的圆表面,最少跳多少次相遇。设跳k次,则(k*m + x) - (k*n + y) = p*l 假设前面的多跳 p圈。变为ax + by = c的形式套用扩展欧几里得模版。这里是输出x的最小值。得到答案 *c/p得 原方程特解之一,以x为例, 如果是非负数 直接%(b/gcd...原创 2019-07-15 17:40:42 · 141 阅读 · 0 评论 -
[LightOJ-1356] Prime Independence 二分图+素数分解
定义若一个数是另一个数的素数倍就不是独立的。给n个数在该定义下的最大独立集。最大独立集 = 总数n - 最大不独立匹配数据大,需要用优化的二分图,对每个数求出素因数,不独立的两个数之间就差一个素因数,若 a 去掉这个素因数得到b在这n个数中,则建双向边,由于建双向边 ,最大匹配要除2。#include<bits/stdc++.h>using namespace s...原创 2019-07-12 11:33:52 · 106 阅读 · 0 评论 -
LightOj 1370 欧拉筛
每个长为 j 的竹子score是它的欧拉函数,费用为 j ,要找 n 个值大于或等于 score 的竹子。求最小花费,特别地, 长度1费用为2。 素数的欧拉函数等于 它值减 1,素数的欧拉值和下标最近,找最小花费,就从该数加一开始找第一个素数 .//LightOj 1370 欧拉筛 #include <iostream>#include <algorithm...原创 2019-07-12 15:57:20 · 117 阅读 · 0 评论 -
LightOJ 1341 - Aladdin and the Flying Carpet 算数基本定理
根据第一个定理,先求出 正因数的个数,再除以二 就是类型数,因为题目说了不为正方形。要求小于b,则从 1 到 b-1 枚举a的约数,每次找到就少一种类型当 b>= sqrt(a)时,ans = 0//LightOJ 1341 - Aladdin and the Flying Carpet//算数基本定理 #include <bits/stdc++.h>#d...原创 2019-07-12 16:01:19 · 136 阅读 · 0 评论 -
2019HDU多校赛第三场 HDU 6608 Fansblog(米勒拉宾判断素数 + 威尔逊定理 )
题意:给一个素数P,求小于P的第一个素数Q!% P 的值。威尔逊定理:即:当且仅当 p为素数时:( p -1 )! ≡ -1 ( mod p )米勒拉宾判素数——大整数是否为素数则找到小于P的第一个素数Q,1*....Q*...*(P-1)%P≡-1,则 1*...*Q%P ≡ -1/( (Q+1)*(Q+2)...*(P-1) )其中除法用逆元(除以一个数取模相当于乘以这...原创 2019-07-29 18:12:15 · 270 阅读 · 0 评论 -
扩展欧几里得求乘法逆元
void ex_gcd(ll a,ll b,ll &d,ll &x,ll &y){ if(!b){d=a; x=1; y=0;} else { ex_gcd(b,a%b,d,y,x); y-=x*(a/b);}}ll inv(ll a,ll p){//求a关于p的逆元 即除以a%p相当于乘以多少%p ll d,x,y; ex_gcd(a,p,d,x,y); ...原创 2019-07-29 18:27:37 · 170 阅读 · 0 评论 -
2019 HDU 多校赛第四场 HDU 6623 Minimal Power of Prime 1e18 合数分解+分类讨论
题意:求 n ( 1<n< 1e18) 的质因子中幂次最小的。解:由于数的范围很大,题意只求幂次最小,预处理10000以内素数,差不多一千两百多个,每次对n先合数分解,若此时幂次最小为1则返回答案。分解完答案不为 1 且分解后的值 tmp 大于 1 ,则存在超过 1e4的质因数,最多4次方(5次超范围)。那就分类讨论,设质因数 a ,b ,有以下四种情况。1. tmp =...原创 2019-08-01 09:50:31 · 145 阅读 · 0 评论 -
LightOJ - 1138 Trailing Zeroes (III) 二分
结尾0个数是看2和5的最小个数,阶乘中2的个数比5多很多。所以看5的个数。二分枚举。注意n/5是 5 的个数, n/25 是 25 的个数 ....例如 39/5 = 7 7/5 = 1 则 ans = 7+1=8. 7是包含 5,10,15,20,25,30,35 7个51是 25 包含 1 一个 5//#include <bits/stdc++.h&g...原创 2019-07-13 20:53:13 · 119 阅读 · 0 评论 -
LightOJ - 1197 区间素数筛模版
给t给样例,每个样例a,b两个数,求区间[a,b]内素数的个数,(1 ≤ a ≤ b < 2^31, b - a ≤ 100000).区间很大,区间差不大// LightOJ - 1197 区间素数筛#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn =...原创 2019-07-13 19:43:45 · 227 阅读 · 0 评论 -
LightOJ - 1214 Large Division 大数取余
#include <iostream>#include <string>using namespace std;int main() { string num; string::iterator it; int T, ca; long long carry, b; while(cin >> T) { ca = 1; while(T...原创 2019-07-13 16:11:55 · 108 阅读 · 0 评论 -
欧拉定理——数论定理
在数论中,欧拉定理也叫费马-欧拉定理,是一个关于同余的性质,欧拉定理表明,若n,a为整数,且n,a互质,则证明: 1~n中与n互质的数按照顺序排布为x1,x2,...xφ(n),显然有φ(n)个 我们考虑这么一些数 m1=a*x1,m2=a*x2,m3=a*x3......mφ(n)=a*xφ(n) 1)这些数中的任意两个都不%n同余 设mS≡mR(modn),不妨令mS&...原创 2018-08-16 09:37:27 · 6349 阅读 · 0 评论 -
HDU 6397 Character Encoding(容斥+费马组合数)
题意:给T组数,n,m,k从0~n-1中选m个数之和为k个方法数对998244353取模输出题解: 对于x1+x2+x3+....+xm=k(xi>=0)有C(k+m-1,m-1)个解 a是不能被质数p整除的正整数 a^(p-1)≡1(modp) --> a^(p-2)=1/a(modp) 则a^p-2为a的逆元对于x1,x2,x...原创 2018-08-16 10:59:03 · 187 阅读 · 0 评论 -
ACM-ICPC 2018 焦作赛区网络预赛 Give Candies
打表发现是2^n-1,但是n很大,借助费马小定理最后还要除以2,因为是n-1次方,乘以逆元,防止除2出现各种问题(2*逆元=1000000008)#include <iostream>#include <algorithm>#include <cstring>#include <queue>#include <vecto...原创 2018-09-15 18:34:38 · 155 阅读 · 0 评论 -
Hdu 1757 A Simple Math Problem 矩阵快速幂
A Simple Math Problem//E#include <bits/stdc++.h>#define ll long long using namespace std;struct Mat{ ll m[101][101];};int mod;int n;Mat a,e;Mat mul(Mat x,Mat y){ Mat c; for(int...原创 2019-07-02 13:43:53 · 138 阅读 · 0 评论 -
bzoj3884: 上帝与集合的正确用法 欧拉降幂
传送门欧拉降幂:a^b (mod p) = a^(b%)(mod p)当 gcd(a,p)==1出题人:#include <bits/stdc++.h>#define ll long long using namespace std;ll euler(ll x){ ll ans = x; for(ll i=2;i*i<=x;i++){ if(...原创 2019-07-02 16:20:39 · 144 阅读 · 0 评论 -
广义欧拉降幂 fzu 1759
其中函数为欧拉函数题意:求a的b次方模c是多少传送门//E#include <iostream>#include <cstdio>#include <cstring>#define ll long long using namespace std;ll euler(ll x){ ll ans = x; for(ll i=2;i...原创 2019-07-02 16:50:29 · 454 阅读 · 0 评论 -
LightOJ - 1282 求n^k次幂 前三位和后三位
#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn = 1e6+5;ll quick(ll a,ll b) { ll ans = 1; while(b) { if((b&1))ans=ans*a%1000; a=a*a%1000; b>...原创 2019-07-12 21:54:00 · 163 阅读 · 0 评论 -
LightOJ - 1259 Goldbach`s Conjecture 欧拉筛
这道题其实没什么,注意数组大小最多int 开 8e6#include <bits/stdc++.h>#define ll long longusing namespace std;const int maxn = 10000005;bool is_prime[maxn];int prime[maxn/10];void get_prime() { me...原创 2019-07-13 10:20:04 · 108 阅读 · 0 评论 -
LightOJ - 1236 Pairs Forming LCM 算数基本定理
a=p1 ^ a1 * p2 ^ a2 *..........*pn ^ anb=p1 ^ b1 * p2 ^ b2 *..........*pn ^ bngcd(a,b)=p1 ^ min(a1,b1) * p2 ^ min(a2,b2) *..........*pn ^ min(an,bn)lcm(a,b)=p1 ^ max(a1,b1) * p2 ^ max(a2,b2) *.....原创 2019-07-13 15:10:11 · 101 阅读 · 0 评论 -
LightOJ - 1234 Harmonic Number 欧拉公式求调和级数
对于调和级数 f(n) = 1/1+1/2+...+1/n 在 n 较小的时候没有公式,当n较大(大于一万)f(n)≈ln(n)+C+1/2*n欧拉常数值:C≈0.57721566490153286060651209#include <bits/stdc++.h>using namespace std;const double r = 0.57...原创 2019-07-13 15:42:10 · 333 阅读 · 0 评论 -
HDU 6624 (2019杭电第五场 1001) fraction (辗转相除求最小分数解 )
题意:分数取模的意义是 a/b = x(mod p),告诉你 p和x,求最小的分数解a/b解:#include <bits/stdc++.h>#define ll long longusing namespace std;void gao(ll pa,ll pb,ll qa,ll qb,ll &x,ll &y){ ll z = (pa+pb-1)/...原创 2019-08-06 10:39:13 · 575 阅读 · 0 评论