数论
Mr.Gzj
这个作者很懒,什么都没留下…
展开
-
9-1拼多多笔试第四题
题意:给出一个数n和m个数,求n关于m的子集。思路:容斥原理,求所有m的集合,在这个集合的所有数,求一下lcm(最小公倍数),如果|集合|是奇数,ans+=n/lcm,否则ans-=n/lcm 。#include <bits/stdc++.h>using namespace std;#define LL long longLL a[40];int main(){ LL N,M,ans=0,gd; scanf("%d%d",&N,&M);转载 2020-09-02 12:08:13 · 986 阅读 · 0 评论 -
poj2115C Looooops(exgcd)
思路:设循环次数为x,则可以发现x=[(b-a+2^k)%2^k]/c,可以看出,这个方程类似于ax = b(mod n),等价于ax-ny=b 是模线性方程,所以可以套扩展gcd的板子解出题来。有一个结论:假设方程ax = b(mod n)有解, x0是方程的任意一个解, 则方程对模n恰有d个不同的解, 分别为: xi = x0 + i * (n / d), 其中 i = 1,2,3.......原创 2019-05-04 11:57:37 · 186 阅读 · 0 评论 -
BZOJ1965洗牌(快速幂+快速乘+逆元)
思路:找规律题,可以发现,牌x移动后就会到2*x%(n+1)的位置,移动m次后就是,则求2^m关于n+1的逆元就是2关于n+1的逆元。#include<bits/stdc++.h>using namespace std;const int N = 2e5 + 7;typedef long long ll;ll n, m, l, mod;ll a, b, x, y;...原创 2019-05-04 00:10:30 · 163 阅读 · 0 评论 -
扩展GCD
扩展gcd:已知ax+by=gcd(a,b),求x,y。①由gcd(a,b)==gcd(b,a%b)得ax+by==bx+(a%b)y,继续化下去,化成ax1+by1的形式即为递归转移式,因为递归过程中a,b不能改变,改的是x,y。bx+(a%b)y ==bx+ (a-(a/b)*b) y == bx+ay-(a/b)*b*y == ay + b(x-a/b*y)即exgcd(ax+...转载 2019-05-03 21:07:35 · 456 阅读 · 0 评论 -
The 16th Zhejiang Provincial Collegiate Programming Contest - B Element Swapping(zoj4101)
思路:dx=(i*b[i]+j*b[j])-(i*b[j]+j*b[i])=(i-j)*(b[i]-b[j]) 同理 dy=(i-j)*(b[i]^2-b[j]^2)=dx*(b[i]+b[j])直接枚举i 将求出的 b[j]=dy/dx-b[i] 带入上面第一个式子求出 j,判断 b[j]和求出的是否一致。#include<bits/stdc++.h>using...原创 2019-04-28 17:12:56 · 222 阅读 · 0 评论 -
P2568 GCD(给定整数N求Gcd(x,y)为素数的数对(x,y)有多少对)
思路:与这道题差不多,不过要加一个素数筛。开o2才过,不开不能过。// luogu-judger-enable-o2#include <bits/stdc++.h>#define int long longusing namespace std;const int32_t N = 1e7 + 10;int t, n, phi[N], b[N], g[N], ans;v...原创 2019-04-18 23:55:24 · 1508 阅读 · 1 评论 -
GCD - Extreme (II) UVA - 11426 (欧拉函数与gcd的关系)
思路:若gcd(n,x)=i,则gcd(n/i,x/i)=1;假设b[n]表示1到n-1与n的gcd的和,那么G[n]=G[n-1]+b[n];a[i]表示与gcd(n, x)= i 的x的个数;b[n]=sum( a[i] * i ) ,所以我们只需求a[i]即可;根据gcd(n, x)=i ----->gcd(n/i, x/i)= 1,因此仅仅要求出欧拉函数phi(n...原创 2019-04-18 23:51:02 · 678 阅读 · 0 评论 -
P2261 [CQOI2007]余数求和
思路:然后就是利用k/i的性质进行分块了#include <bits/stdc++.h>using namespace std;long long ans, s, n, k, j, i;int main() { cin >> n >> k; ans = n * k; for(i = 1; i <= n; i += (...原创 2019-04-23 16:39:24 · 155 阅读 · 0 评论 -
LightOJ1197(大区间素数打表)
题意:给你两个数,a,b,让你求区间[a,b]里面有多少个素数;#include <bits/stdc++.h>#define int long longusing namespace std;const int32_t N = 1e7 + 10;int t, a, b, mod, ans, ak[N / 100];vector<int>p;bool...原创 2019-04-18 18:02:02 · 193 阅读 · 0 评论 -
LightOJ1220 Mysterious Bacteria(唯一分解+负数处理)
题意:给你一个整数n(可能为负数),让你求满足a^p=n的最大的p思路:当n是正数时,直接对n进行素因子分解,在对它的素因子的个数进行gcd,比如12=2^2*3,gcd(2,1)就是最大的p;当n是负数时,则p的值一定是奇数,因为一个数的偶数次方一定为整数,因此需要将它的素因子个数全都化为奇数。#include <bits/stdc++.h>#define i...原创 2019-04-18 15:44:29 · 170 阅读 · 0 评论 -
poj1830开关问题
题意:有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变为关,如果为关就变为开。你的目标是经过若干次开关操作后使得最后N个开关达到一个特定的状态。对于任意一个开关,最多只能进行一次开关操作。你的任务是,计算有多少种可以达到指定状态的方法。思路:令a[i][j]为不同灯泡的对应关...原创 2019-04-29 20:42:48 · 551 阅读 · 0 评论 -
BZOJ 1013: [JSOI2008]球形空间产生器
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体。现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁这个球形空间产生器。Input 第一行是一个整数n(1<=N=10)。接下来的n+1行,每行有n个实数,表示球面上一点的n维坐标。每一个实数精确到小数点后6位,且其绝对值都不...原创 2019-04-29 16:36:14 · 141 阅读 · 0 评论 -
高效位运算 __builtin_系列函数
•int __builtin_ffs (unsigned int x)返回x的最后一位1的是从后向前第几位,比如7368(1110011001000)返回4。•int __builtin_clz (unsigned int x)返回前导的0的个数。•int __builtin_ctz (unsigned int x)返回后面的0个个数,和__builtin_clz相对。•i...转载 2019-04-25 11:24:13 · 329 阅读 · 0 评论 -
逆元的求法总结
逆元逆元(Inverse element)就是在mod意义下,不能直接除以一个数,而要乘以它的逆元。比如a∗b≡1(modp)a*b≡1(mod p)a∗b≡1(modp),a,ba,ba,b互为模ppp意义下的逆元,就是当你想要求x/ax/ax/a就可以改为求x∗b%px*b\%px∗b%p观察a∗b≡1(modp)a*b≡1(mod p)a∗b≡1(modp),可以变形为a∗b+k∗p=...转载 2019-09-10 20:27:35 · 511 阅读 · 0 评论 -
The Preliminary Contest for ICPC Asia Xuzhou 2019 A. Who is better?(java大数求中国剩余定理+斐波那契博弈模板)
题意:类似于有N个石子,先手第一次不能拿完,每次后手只能拿1 到 前一次拿的数量*2之间的数量,不能拿时则输import java.math.BigInteger;import java.util.Scanner;public class Main { public static BigInteger x = BigInteger.ZERO, y = BigInteger.Z...原创 2019-09-18 23:45:06 · 155 阅读 · 0 评论 -
G. (Zero XOR Subset)-less(线性基)
题目链接:http://codeforces.com/contest/1101/problem/G题意:给你n个数,然后让你把这n个数分成尽可能多的集合,要求,每个集合的值看做这个集合所有元素的异或值,并且任意个集合对应的值,再进行异或也不能为0,然后如果不存在合理的分法的时候,输出-1。否则,输出能分出的最大的集合个数。思路:如果是-1则是这个数组总的异或为0。然后求这些数的线性基,因...原创 2019-07-25 20:51:56 · 272 阅读 · 0 评论 -
杭电2019多校第三场 HDU-6608 Fansblog(威尔逊定理+大数判素数+逆元)
威尔逊定理:在初等数论中,威尔逊定理给出了判定一个自然数是否为素数的充分必要条件。即:当且仅当p为素数时:(p−1)!≡−1(modp)( p -1 )! ≡ -1 ( mod p )(p−1)!≡−1(modp),但是由于阶乘是呈爆炸增长的,其结论对于实际操作意义不大。题意:TTT组样例,每组给出一个素数P(109≤p≤1014)P(10^9≤p≤10^{14})P(109≤p≤1014),Q...原创 2019-07-30 16:42:13 · 256 阅读 · 0 评论 -
2019 Multi-University Training Contest 1 Operation(区间线性基求最大异或和)
题意: 给出nnn个数,两个操作,第一个操作是在末尾加上一个数,数列长度变为n+1n+1n+1,第二个操作是给出左右范围l,rl,rl,r让你从lll到rrr内挑几个数,使他们的异或和是最大的。但给出的数字是加密的,解密需要在第一个操作异或lastanslastanslastans,第二个操作l=(l⊕lastans)%n+1l=(l \oplus lastans)\%n+1l=(l⊕lastan...原创 2019-07-23 17:36:38 · 162 阅读 · 0 评论 -
我关于的线性基简单理解
线性基:线性基是一种特殊的基,它通常会在异或运算中出现,它的意义是:通过原集合S的某一个最小子集S1使得S1内元素相互异或得到的值域与原集合S相互异或得到的值域相同。线性基有三个性质:1、原序列里面的任意一个数都可以由线性基里面的一些数异或得到。2、线性基里面的任意一些数异或起来都不能得到03、线性基里面的数的个数唯一,并且在保持性质一的前提下,数的个数是最少的简单说明一下性质一和二...原创 2019-07-23 17:27:29 · 246 阅读 · 0 评论 -
D. Almost All Divisors
题意:给出一个数n,下面n个数,求最小的x,使x的所有约数除了1和x外都在n的数组里,若没有x,输出-1。思路:若存在x,则最小的约数乘以最大的约数就是最小的x,然后判断一下x是否符合题意即可,傻逼题,可能最近做题少了,题意读错了#include<bits/stdc++.h>#define ll long longusing namespace std;ll t, n,...原创 2019-05-15 14:45:36 · 410 阅读 · 1 评论 -
Codeforces Round #554 (Div. 2) C. Neko does Maths
题意:求lcm(a+k,b+k)的k,使lcm最小,给出a,b思路:lcm最小,则gcd(a+k,b+k)最大,gcd(a+k,b+k)==gcd(a+k,b-a),b-a是固定的,从这里入手,找出a-b的所有因数,一个一个试,找出最小的lcm#include <bits/stdc++.h>using namespace std;typedef long long ...原创 2019-04-25 16:42:59 · 157 阅读 · 0 评论 -
Harmonic Number LightOJ - 1234 (打表)
题意:求1/1+1/2+1/3+...+1/n的精确值。10000次访问,1e8的范围思路:暴力先打好所有的值,大概1s就可以,然后看看空间,最大是32m,如果暴力要700多m,空间爆炸,所以缩小100倍,每隔100记录一下答案,然后每次访问就最多算100次,可以ac。#include <bits/stdc++.h>using namespace std;int t, n...原创 2019-04-18 14:37:23 · 117 阅读 · 0 评论 -
Pairs Forming LCM LightOJ - 1236 (求Lcm(a,b)=n的个数)
题意:有t组数据,输入一个n(1-1e14),求lcm(a,b)=n且a<b<n的个数。思路:1、设A=p1^a1*p2^a2*p3^a3...... B=p1^b1*p2^b2*p3^b32、lcm(A,B)=p1^max(a1,b1)*p2^max(a2,b2)*p3^max(a3,b3) == n3、n=p1^c1*p2^c2*p3^c3...... ...原创 2019-04-17 22:27:43 · 347 阅读 · 0 评论 -
欧拉函数
欧拉函数φ(n)是1~n-1的与n互质的数的个数欧拉函数公式:φ(n)=n*(1-1/p1)*(1-1/p2)*(1-1/p3)*...*(1-1/pn);这里的pi是n的所有质因数,n>0。欧拉定理:若n为素数,φ(n)=n-1。若n的另一个素数p的a次幂,φ(p^a)=(p-1)*p^(a-1),比p^a小的数有p^a-1个,那么有p^(a-1)-1个数能被p所整除(1~p^...原创 2019-04-05 17:19:53 · 3491 阅读 · 0 评论 -
B 异或约数和
https://www.51nod.com/Contest/Problem.html#!#contestProblemId=780思路:先看一个问题:f(n)表示n的约数个数,现在给出n,要求求出f(1)到f(n)的总和。可以发现[1,n]中约数有i的个数是n/i ,然后进行分块处理,在这里我们举个例子,比如n为100时,100/34=2,100/2=50,所以小于n的数约数中有...原创 2019-03-24 17:33:13 · 277 阅读 · 0 评论 -
P3908 数列之异或
题目描述求1 \bigoplus 2 \bigoplus\cdots\bigoplus N1⨁2⨁⋯⨁N的值。A \bigoplus BA⨁B即AA,BB按位异或。输入输出格式输入格式:1 个整数NN。输出格式1 个整数,表示所求的值。看到题解里一个十分牛逼的做法:题目要求 1^2^...^n,我们强制使得n为奇数 ,就是说如果n是偶数,我们就让n=n...原创 2019-03-24 20:58:56 · 490 阅读 · 0 评论 -
newcoder c:约数
题目描述Actci上课睡了一觉,下课屁颠屁颠的去找数学老师补课,问了老师一个题目: 给出两个数a,b,问a和b的全部公约数是什么?数学老师一看这道题太简单了,不屑回答,于是就交给了你。输入描述:一行两个数a,b.输出描述:a和b的全部公约数,每个数字之间空格隔开。#include<bits/stdc++.h>#define INF 0x3ffff...原创 2018-12-23 16:21:13 · 260 阅读 · 0 评论 -
NOIP2017D1T1-小凯的疑惑
链接:https://ac.nowcoder.com/acm/problem/16414来源:牛客网题目描述小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。输入描述:输入数据仅...原创 2018-12-24 14:36:36 · 474 阅读 · 0 评论 -
P2424 约数和
题目背景Smart最近沉迷于对约数的研究中。题目描述对于一个数X,函数f(X)表示X所有约数的和。例如:f(6)=1+2+3+6=12。对于一个X,Smart可以很快的算出f(X)。现在的问题是,给定两个正整数X,Y(X<Y),Smart希望尽快地算出f(X)+f(X+1)+……+f(Y)的值,你能帮助Smart算出这个值吗?输入输出格式输入格式:输入文件仅一行,两个...原创 2019-03-24 20:35:18 · 179 阅读 · 0 评论 -
“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛
a、hzy 和zsl 的生存挑战思路:看见“假设他们都足够机智”就够了,全输出1.00就ac#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define ll long long#define mem(ar,num) memset(ar,num,sizeof(ar))#define me(ar) memset(ar,0,si...原创 2019-03-17 14:44:21 · 336 阅读 · 0 评论 -
hdu3501Calculation 2
位置思路:记一个公式。给出一个N,求[1,n]中与N互质的数的和就是这个公式:n*phi[n]/2#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<string>#include<set>...原创 2019-03-15 23:32:16 · 206 阅读 · 0 评论 -
HDU2588GCD(欧拉函数)
传送阵题意:求1-n中有多少数是与n的gcd大于m的。思路:gcd(x,n)=a,则gcd(x/a,n/a)=1,所以x/a与n/a互质,n=a*b,x=a*d,则b与d互质且b>=d,所以d的数量就是b的欧拉函数值。但再一看这道题的数据是1亿,所以枚举肯定超时,我们就要用一种方法去优化。可以枚举1到sqrt(n),所以当n%i==0时,若i>=m则ans+=euler(n...原创 2019-03-15 12:42:29 · 162 阅读 · 0 评论 -
Bi-shoe and Phi-shoe
LightOJ - 1370思路:欧拉函数模板题。。不过我这代码预处理都1s多,结果交上去后。。#include<bits/stdc++.h>#define ll long longusing namespace std;const int maxn = 1000200;int t, n, phi[maxn],mp[maxn];void euler() { ...原创 2019-04-10 15:29:40 · 125 阅读 · 0 评论 -
P1414 又是毕业季II
预处理得到所有数的因数,设一个数组保存因数的个数#include <bits/stdc++.h>typedef long long ll;using namespace std;int n, num[1000100], ma;int main() { cin >> n; for(int a, i = 0; i < n; i++) { ...原创 2019-04-06 17:46:34 · 185 阅读 · 0 评论 -
Harmonic Number (II) LightOJ - 1245
题意:给出一个数n,求n/1+n/2+n/3+...+n/n。思路:都是正整数运算,但数据范围是从1到2^31,且一个点有1000个测试数据,暴力绝对t。我们发现,若是整数运算,则100/34=2,100/50=2,所以从34到50都是2,就可以进行分块处理。#include <bits/stdc++.h>#define lcm(a,b) ((a)*(b)/(__gcd((...原创 2019-04-17 20:30:01 · 266 阅读 · 0 评论 -
Goldbach`s Conjecture LightOJ - 1259
素数筛水题,看来要把素数筛背下来了#include<bits/stdc++.h>#define ll long longusing namespace std;ll n, k, t, c = 1, x;bool vis[10000100];int prime[1000100], top;void getp() { vis[1] = 1; for(int...原创 2019-04-16 17:32:17 · 151 阅读 · 0 评论 -
Leading and Trailing (n^k前三位)
给一个数n(1e9)和k(1e7),求n^k的前三位和后三位,,,后三位直接快速幂,主要是前三位怎么求。设10^q=n^k,两边取log,得q=klgn,再利用一个函数 double a=modf(double x,double *i ),返回x的整数部分给i,小数部分给a则q的整数部分就是1000...000,小数部分才是真正的前三位值,所以取a的前三位,用floor(x)函数,返回不大...原创 2019-04-16 16:23:05 · 144 阅读 · 0 评论 -
P1072 Hankson 的趣味题
#include<bits/stdc++.h>#define ll long longusing namespace std;int n;ll a0, a1, b0, b1;int main() { cin >> n; while(n--) { cin >> a0 >> a1 >> b0 >...原创 2019-04-09 15:29:34 · 226 阅读 · 0 评论 -
扩展欧几里得水题
1、nyoj144思路:根据扩展欧几里得,ax+by=c,当c!=__gcd(a,b)时无整数解#include<bits/stdc++.h>#define fi first#define se second#define INF 0x3f3f3f3f#define ll long long#define ld long double#define mem(ar,...原创 2019-04-03 16:08:04 · 166 阅读 · 0 评论 -
青蛙的约会详解(扩展欧几里得)
solution:输入,a,b,m,n,l,则(a+mt)%l==(b+nt)%l时,他们相遇不定方程:(n-m)x+ly=b-a。化为ax+by=c的形式,可以判断,若c%gcd(a,b)!=0则青蛙永远不能相遇接下来用exgcd求出一组特解x0,y0。部分摘自https://blog.csdn.net/u013377068/article/details/79748279假设a...原创 2019-04-03 15:40:43 · 657 阅读 · 0 评论