数论
文章平均质量分 69
Link_Ray
这个作者很懒,什么都没留下…
展开
-
康托展开与逆康托展开(模板)
康托展开:求一个数在全排列中的第几位。 例如{1,2,3,4,…,n}表示1,2,3,…,n的排列,12345……n,即为第0个排列。 以{1,2,3,4} 表示1,2,3,4的排列为例,求1324在全排列中的第几位。 由组合数学易得:全排列的总数为4!。 第一位有4种选法,第二位3种,第三位2种,第一位1种。 首先 1 比 它小的数是 0 个 ,比1000小的排列有0 * 3!(3!代表原创 2017-11-25 17:53:37 · 722 阅读 · 0 评论 -
codeforces 936A Save Energy(数学思维)
Julia is going to cook a chicken in the kitchen of her dormitory. To save energy, the stove in the kitchen automatically turns off after k minutes after turning on.During cooking, Julia goes to the ...原创 2018-02-26 18:21:14 · 659 阅读 · 0 评论 -
codeforces511 div2C/div1A enlarge gcd 数论+思维
题意:给你n个数,需要删除几个数,使得剩余数的gcd大于初始数的gcd,问最少需要删除多少个数。题解:所有数的gcd是跟每个数的质因子有关的,此题只需算出删除数的个数,不需要计算删除数后的gcd。首先,算出所有数的gcd,然后一次枚举每一个数,先将这个数除以gcd,之后在枚举质数p,算每个数所贡献的质数cnt[prime]++。答案就是n-max{ cnt[prime] }。这个复杂度如果...原创 2018-10-16 09:49:01 · 232 阅读 · 0 评论 -
Codeforces Round #519 by Botan Investments F. Make It One(容斥+组合数学)
题目链接题意给出长度为nnn的正整数序列,要求找出一个最小的子集,使得子集中的数的gcd等于1。没有的话输出-1,否则输出子集大小。序列中的数0≤ai≤3000000 \leq a_i \leq 3000000≤ai≤300000。题解暴力的做法就是从1开始枚举子集的大小,不同的子集个数2n2^n2n,肯定要超时。我们可以设dp[i][j]dp[i][j]dp[i][j]表示集合大小为i...原创 2018-11-01 22:59:06 · 258 阅读 · 0 评论 -
codeforces 1114C Trailing Loves (or L'oeufs?) (数论)
https://codeforces.com/contest/1114/problem/C题意输入一个n和b。1≤n≤10181\leq n\leq 10^{18}1≤n≤1018,2≤b≤10122 \leq b \leq 10^{12}2≤b≤1012。输出n! 在b进制下,末尾连续0的个数。例如5 2120 = 1111000末尾连续0的个数为3。题解n!=xk∗byk+xk...原创 2019-02-26 22:34:45 · 262 阅读 · 0 评论 -
扩展BSGS
https://codeforces.com/gym/101853/problem/G当板子记住把#include<bits/stdc++.h>using namespace std;const int MAX=5e5+10;typedef long long ll;ll BSGS(ll a,ll b,ll m){ a%=m; b%=m; if(b...原创 2019-04-08 20:09:43 · 614 阅读 · 0 评论 -
2018 CCPC-final K - Mr. Panda and Kakin(RSA解密) 和 第十届蓝桥省赛C++A组填空题 RSA解密(非暴力解法)
https://codeforc.es/gym/102055/problem/KK - Mr. Panda and Kakin题意给出n,cn, cn,c,n=p∗qn = p*qn=p∗q,ppp和qqq是x附近相邻的两个质数,c=f230+3 mod nc = f^{2^{30}+3} \ mod\ nc=f230+3 mod n。求出fff的值。...原创 2019-05-20 19:21:45 · 1145 阅读 · 0 评论 -
扩展欧几里得算法求解不定方程||中国剩余定理
对于ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b)这样的方程,可以用扩展欧几里得算法exgcd求出一组通解。根据欧几里得求gcd:gcd(a,b)=gcd(b,a%b)gcd(a,b)=gcd(b,a\%b)gcd(a,b)=gcd(b,a%b)可得bx+(a%b)y=gcd(b,a%b)bx+(a\%b)y=gcd(b,a\%b)bx+(a%b)...原创 2019-05-07 11:53:41 · 603 阅读 · 0 评论