随笔分类 - 数论
摘要:DFT : 1 #include <cstdio> 2 #include <iostream> 3 #include <cmath> 4 #include <complex> 5 typedef double db; 6 typedef long long ll; 7 8 #define com c
阅读全文
摘要:java代码: 1 import java.math.BigInteger; 2 import java.util.Scanner; 3 4 public class Main 5 { 6 public static void solve(int n) 7 { 8 BigInteger N, p1,
阅读全文
摘要:题目链接:https://codeforces.ml/gym/102428/attachments/download/9820/statements-en.pdf 题意:构造一个多项式使得外星人编号的函数值小于零,人类的编号函数值大于零。 思路:零点存在问题,我们只要找出字符串中有多少A-H或者H-
阅读全文
摘要:1 b[1]=1; 2 for(int i=1;i<=tot;i++){ 3 for(int j=i+1;j>=1;j--)b[j]=b[j-1]; //往左移 4 for(int j=1;j<=i+1;j++)b[j-1]-=a[i]*b[j];//低幂=低幂-高幂系数*零点值 5 for(int
阅读全文
摘要:题目链接:https://vjudge.net/problem/HDU-5950 思路: 构造矩阵,然后利用矩阵快速幂。 1 #include <bits/stdc++.h> 2 #include <time.h> 3 #include <set> 4 #include <map> 5 #inclu
阅读全文
摘要:题目链接:https://vjudge.net/problem/Gym-102220G 题意:在水平直角坐标系中有n个矩形,你可以将矩形沿着平行于X轴和Y轴水平移动,问至少经过几次移动可以使得所有的矩形都有公共顶点。 思路:可以把每一个矩形看成一段线段,对线段进行移动,沿着平行于X轴和Y轴移动算法是
阅读全文
摘要:线性基: 1 inline void insert(long long x) { 2 for (int i = 55; i + 1; i--) { 3 if (!(x >> i)) // x的第i位是0 4 continue; 5 if (!p[i]) { 6 p[i] = x; 7 break;
阅读全文
摘要:费大马定理: 奇偶数列法则: 经典例题:HDU——6441 1 #include <bits/stdc++.h> 2 #include <time.h> 3 #include <set> 4 #include <map> 5 #include <stack> 6 #include <cmath> 7
阅读全文
摘要:题目链接:https://vjudge.net/problem/HDU-1124#author=0 题意:求N!末尾零的个数。 思路:相当于求10的个数那么就是求因子2*5个数,因为5肯定比2那么只要求5的个数,5的个数其实就是5^1+5^2+......+5^n,那么sum+=n/5。 1 #in
阅读全文
摘要:题目链接:https://vjudge.net/problem/Gym-102309C 题意:给定蔡徐坤投篮的位置和篮筐的位置以及最大初速度,求一个初速度和时间。 思路:一开始我以为要用到二分,后面仔细一想不用这么麻烦,题目限制了最大初速度,但又保证一定存在解,那么我们就直接可以用给定的初速度,然后
阅读全文
摘要:1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 #include<cmath> 6 using namespace std; 7 typedef long long LL; 8 L
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P2522 题意:对于给出的 n 个询问,每次求有多少个数对 (x,y),满足 gcd(x,y)=k,其中(a<=x<=b,c<=y<=d) 思路: 1 //#include<bits/stdc++.h> 2 #includ
阅读全文
摘要:1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e5+5; 4 bool isprime[maxn]; 5 int prime[maxn]; 6 int mu[maxn]; 7 int cnt=0; 8 void
阅读全文
摘要:1 long long ans = n * k; 2 for (long long l = 1, r; l <= n; 3 l = r + 1) { //此处l意同i,r意同j,下个计算区间的l应为上个区间的r+1 4 if (k / l != 0) 5 r = min(k / (k / l), n
阅读全文
摘要:题目传送门:https://vjudge.net/problem/HDU-2289 题意:有一个上口小于底部的圆台形水杯,告诉我们水的体积求水高度。 思路:利用高中数学知识求rr然后二分求h,具体化简过程见下图。 1 //#include<bits/stdc++.h> 2 #include<time
阅读全文
摘要:题目传送门:https://vjudge.net/problem/HDU-1028 思路:整数拆分构造母函数的模板题 1 //#include<bits/stdc++.h> 2 #include<time.h> 3 #include <set> 4 #include <map> 5 #include
阅读全文
摘要:互质 情况: 1 #include <cstdio>//互质 2 int exGcd(int a,int b,int &x,int &y) 3 { 4 if(b == 0) 5 { 6 x = 1,y = 0; 7 return a; 8 } 9 int d = exGcd(b,a%b,y,x);
阅读全文
摘要:1.针对p为素数情况: 1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #define ed 100005 5 using namespace std; 6 int k,n,m,p; 7 long long a[ed],
阅读全文
摘要:#include <bits/stdc++.h> using namespace std; typedef long long ll; int t; ll n, p; ll w; struct num { //建立一个复数域 ll x, y; }; num mul(num a, num b, ll
阅读全文
摘要:#include <bits/stdc++.h> #define int long long using namespace std; const int P = 998244353; int i2 = 499122177, i6 = 166374059; struct data { data()
阅读全文