数论
MaxVen
这个作者很懒,什么都没留下…
展开
-
大数幂(欧拉降幂)
/* 数字的超大幂数 (欧拉降幂 + 快速幂) 幂数超过1e9s (a^b)%c=a^[b%la(c)+la(c)] mod(c) */#include<iostream>#include<cstring> #include<cstdio>#include<cmath>using namespace std;typedef long long LL;long long pow(LL q,LL w,LL原创 2020-11-24 17:03:47 · 356 阅读 · 0 评论 -
bitset函数(二进制处理)
//2018年第九届蓝桥杯【C++省赛B组】【第二题:明码】#include <bits/stdc++.h>using namespace std;int main() { int n,m; string str1,str2; while(cin>>n>>m) { bitset<8> b(n); //将一个数字转换为一个长度为n的二进制串 str1 = b.to_string();//将b转化为字符串类型 cout<<str原创 2020-11-24 17:02:27 · 507 阅读 · 0 评论 -
错排公式(数论)
错排公式#include#include#include#define N 1000using namespace std;int jc(int i){int sum=1;while(i>=1){sum*=i;i–;}return sum;}int main(){//错排是指异于字符串本身的;int n,a[N]= {0,0,1};while(cin>>n){for(int i=3; i<=n; i++)a[i]=(i-1)*(a[i-原创 2020-11-24 14:13:13 · 104 阅读 · 0 评论 -
等比、等差数列及其求和公式
等差等比两个 基本的 公式原创 2020-11-17 19:20:12 · 592 阅读 · 0 评论 -
求约数、约数个数、约数之和
试除法 求约数#include<bits/stdc++.h>using namespace std;#define mem(a,b) memset(a,b,sizeof(a))#define ll long long long#define forr(i,a,b) for(int i=a;i<=b;i++)vector<int> pri(int n){ vector<int> res; forr(i,1,n/i){ if(n%i==0){原创 2020-11-17 19:20:05 · 374 阅读 · 0 评论 -
判质数(素数)、分解质因数、素数筛
AcWing866.试除法判断质数#include<bits/stdc++.h>using namespace std;#define forr(i,a,b) for(int i=a;i<=b;i++) int n; int t;bool prime(int n){ if(n<2) return 0; forr(i,2,n/i){ if(n%i==0) return 0; } ret原创 2020-11-17 19:19:58 · 99 阅读 · 0 评论 -
ex_gcd扩展欧几里得
要去了解ex_gcd 先来介绍下 贝族定理当 a,b为整数时一定存在 整数x,y使得 ax+by=gcd(a,b)换句话说 存在整数解的时候 ax+by=m , m 一定是gcd(a,b)的整数倍相对的 当 ax+by=1时 gcd(a,b)=1;也就是a,b互素gcd()int gcd (int a, int b){ if(a%b) return gcd(b,a%b) return a;ex_gcd)()当达到 gcd递归边界是这时 a=gcd(a,b),b=0是原创 2020-11-07 17:20:12 · 101 阅读 · 0 评论 -
F Fraction Comparision(__int128,大数乘。38位)
F Fraction Comparision据说能处理数字长度34位以内的#include<iostream>#include<cstdio>#include<cstring>#include<bitset>#include<sstream>#include<string.h>#include<iomanip>#include<cmath>#include<algorithm&g原创 2020-11-05 10:26:21 · 93 阅读 · 0 评论 -
92. 递归实现指数型枚举(二进制,dfs)
92. 递归实现指数型枚举从 1~n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数n。输出格式每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围1≤n≤15输入样例:3输出样例:322 311 31 21 2 3每个数 选不选对应一种情况2^n种情况#include<iostream>#原创 2020-11-04 19:34:55 · 154 阅读 · 0 评论 -
一维/二维 前缀和及差分
AcWing 795. 前缀和听名字就是 数组当前位置 内部存的数 是他之前及本身的 和原本a[10]存的自己 现在 sum[0]=a[0],sum[1]=a[0]+a[1];以此类推。AC代码#include<iostream>using namespace std;const int N=1e5+10;int num[N];int main(){ int ...原创 2019-11-29 10:07:20 · 214 阅读 · 0 评论 -
二分专题(789-整数二分,790-浮点数二分)
二分两个 注意点在求数字范围时 中点的确认再求某以固定数字时 左右均为中点值AcWing 789. 数的范围AC代码及详解//AcWing 789. 数的范围#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int N...原创 2020-01-10 17:36:12 · 211 阅读 · 0 评论 -
CF1303D Fill The Bag(位运算)
CF1303D Fill The Bag题意:给你两个数字 n,m然后下面跟着 m个 2的任意次方 的数让你用这m个数中的 某些之和组成 数字n可以对 这些数的某一个 进行分解比如 2^5=32进行一次分解 16 + 16输出 最小的分解次数,如果没有合适答案 输出-1问题分析:位运算+贪心看到 2进制 显然想到的 就是位运算因为 存在 最小问题,一般就是 贪心之类(当然有时CF故意让你往难的想)如果是最小问题:就必须把 原本存在的 的2某次方全部减去,这样才能保证最少显然,fo原创 2020-10-21 07:55:16 · 102 阅读 · 0 评论 -
高精度(791.792.793.794 加减乘除)
AcWing 791. 高精度加法注意点:auto尾数下标为 length()-1 或者 size() -1AC代码#include<iostream>#include<cstring>#include<vector>using namespace std;vector<int> add(vector<int> &a...原创 2020-02-09 15:00:32 · 296 阅读 · 0 评论 -
ACM大数算法
文章目录大数乘AC代码最大公约数Ac代码大数乘简单的乘法,计算 A * bInput多组样例,每组样例两个整数A、B,每个整数的长度不超过 50000。Output对于每组样例,输出一行 A * bSample Input1210002Sample Output22000AC代码import java.math.BigInteger;import java.uti...原创 2020-04-21 07:09:29 · 256 阅读 · 0 评论 -
C. Lucky Tickets
C. Lucky Tickets题意:能被3整除的数字 被认为是幸运的现在有一组数 他们每一个数都被分成了2部分例如12345 ->123/45 12399->1239/9现在要求你重新将他们组合起来使得形成的 幸运的数字最多问题分析:一个性质 能被三整除的 数 他的各位数字之和也能被3整除呢么问题转化为 每部分数取余3看余数 ->配对0:2个 组成一个lucky number1:和余数2组成一个lucky2:和余数1组成一个lucky1/2取最小值原创 2020-10-13 07:24:20 · 228 阅读 · 0 评论 -
两大速筛素数以及大区间素数快速统计
文中有解释:#include<iostream>#include<cstring >#include<cstdio>#include<cmath>#define maxn 1000001#define maxx 100005#define mem(a,b) memset(a,b,sizeof(a));using namespace s...原创 2019-11-08 16:25:43 · 114 阅读 · 0 评论 -
取模性质,快速幂,快速乘,gcd和最小公倍数
一.取模运算取模(取余)运算法则:(a+b)%p=(a%p+b%p)%p;2.(a-b)%p=(a%p-b%p)%p;3.(a*b)%p=(a%p * b%p)%p;4.(a^b)%p=( (a%p)^b )%p;( (a+b)%p+c )%p=( a+(b+c)%p )%p;6.( a*(bc)%p )%p =( c(a*b)%p )%p;7.( (a+b)%...原创 2019-11-08 16:24:19 · 293 阅读 · 0 评论 -
数论总结
数论 (由用使用markdown写的代码无法缩进篇幅较长…)A - 质数筛 LightOJ - 1370思路 : 运用了欧拉函数的一个性质 :当n为质数是 f(n)=n-1问题 给出 一个分数要求 竹子长度的欧拉函数大于等于分数由上述定理可知长度一定大于分数 只需要找到分数+1往上的一个素数减去1就是满足要求的最最短长度的最大的分数 !代码如下#include<iostream...原创 2019-11-09 18:24:58 · 140 阅读 · 0 评论 -
cf1203C C. Common Divisors(GCD)
#问题分析gcd + 优化 (一个数的因数至少有一半小于等于 sqrt(这个因数)#AC代码如下:#include<iostream>#include<cstring>#include<cmath>#include<set>using namespace std;const int maxn=4e5+3;long long nu...原创 2019-11-09 18:26:08 · 123 阅读 · 0 评论