![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
让人头秃的数学
为什么他们cf写的这么快
这个作者很懒,什么都没留下…
展开
-
【牛客】G 炫酷数字(约数定理)
思路:一个数的因子个数等于每个质因数指数+1的乘积,所以我们可以打表,存一下每个因子个数对应的数有哪些。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e6+1;vector<int>v[maxn];int tot,prime[maxn],isprime[maxn];void Prime(int n){ for(int i=2;i<n;++i) .原创 2021-03-13 11:00:31 · 85 阅读 · 0 评论 -
Codeforces Round #641 (Div. 2) C. Orac and LCM(数论+gcd)
题目链接题意:求gcd{lcm(a【i】,a【j】} i<j思路:不知道正解是啥,就写一下比赛时的思路,感觉比D题还难呀。右唯一分解定理知最后的答案一定和素因子之间的乘积,于是考虑一下素因子的贡献,先打表素数表,然后对于每个a【i】分解质因子,那么什么情况下素因子能产生贡献呢?只有含有素因子的个数等于n或者n-1的时候,个数等于n的时候很容易知道lcm会约去最小的那个,于是贡献就是g【t】【1】,那等于n-1的时候为什么也成立呢,因为数组a中如果只有一个数没有这个素因子的话,那么假设这个数为a原创 2020-05-13 22:03:08 · 199 阅读 · 0 评论 -
Codeforces Round #304 (Div. 2) D. Soldier and Number Game(数论+质因子分解)
题目链接题意:给定a和b,你每次都可以选择a!/b!的一个因子k,使它变成a!/b!/k,如此反复操作,问你最终变成1的最大操作次数。思路:很显然就是求a!/b!的所有质因子的指数的个数和,用筛素数,再O(1)查询。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=...原创 2020-04-19 09:55:16 · 126 阅读 · 0 评论 -
牛客练习赛60D 斩杀线计算大师(exgcd)
题目链接链接:https://ac.nowcoder.com/acm/contest/4853/D来源:牛客网题目描述算术能力是每个炉石玩家必不可少的,假设现在有三种伤害卡,伤害值分别是a,b,ca,b,c。并且每种伤害卡的数量你可以认为是无限的。现在牛牛想知道是否存在一种方式可以刚好造成kk点伤害,输出x,y,zx,y,z分别表示三种伤害卡的使用个数。数据保证一定存在解。如果存在多组解...原创 2020-03-29 20:29:08 · 131 阅读 · 0 评论 -
Codeforces Round #382 (Div. 2) D. Taxes(数论+哥德巴赫猜想)
题目链接思路:哥德巴赫猜想:任何大于2的偶数都可以写成两个素数之和,奇数可以写成三个素数之和。所以如果n是素数,就是1,不是素数但是偶数输出2,然后如果n-2不是素数的话就是3,否则就是2.#include<bits/stdc++.h>using namespace std;#define ll long longbool is(int x){ if(x<2) ...原创 2020-03-26 20:57:48 · 107 阅读 · 0 评论 -
Codeforces Round #552 (Div. 3) G. Minimum Possible LCM(数论)
题目链接思路:枚举1-1e7作为因子,然后看看它的倍数存不存在,比较一下最大值就行。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e7+1;int n,x,y,pos[maxn],num[maxn];ll ans=1e18+1;int main(){...原创 2020-03-26 20:36:19 · 121 阅读 · 0 评论 -
Mail.Ru Cup 2018 Round 2 C. Lucky Days(扩展欧几里得)
题目链接#include <bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ll l1,r1,t1,l2,r2,t2; scanf("%lld %lld %lld",&l1,&r1,&t1); scanf("%lld %lld %lld",&l2,&a...原创 2020-03-24 22:48:55 · 253 阅读 · 0 评论 -
hdu6069 Counting Divisors(数论+约数定理)
题目链接Problem DescriptionIn mathematics, the function d(n) denotes the number of divisors of positive integer n.For example, d(12)=6 because 1,2,3,4,6,12 are all 12’s divisors.In this problem, given...原创 2020-03-23 21:45:59 · 122 阅读 · 0 评论 -
hdu6434 Problem I. Count(数论)(好题)
题目链接Problem DescriptionMultiple query, for each n, you need to getn i-1∑ ∑ [gcd(i + j, i - j) = 1]i=1 j=1InputOn the first line, there is a positive integer T, which describe the number of quer...原创 2020-03-21 21:45:16 · 166 阅读 · 0 评论 -
hdu5750 Dertouzos(数论+素数)
题目链接Problem DescriptionA positive proper divisor is a positive divisor of a number n, excluding n itself. For example, 1, 2, and 3 are positive proper divisors of 6, but 6 itself is not.Peter has t...原创 2020-03-21 21:33:04 · 204 阅读 · 1 评论 -
hdu3221 Brute-force Algorithm(矩阵快速幂+欧拉降幂)
题目链接思路:答案是一个递推式ans【n】=ans【n-1】*ans【n-2】,ans【1】=a,ans【2】=b,当n大于3的时候a和b的指数就是斐波那契数列,我们可以用矩阵快速幂算出来,但是还不行,这里的指数可能会很大,还需要用欧拉降幂#include<bits/stdc++.h>using namespace std;#define ll long longll f...原创 2020-03-20 21:02:54 · 159 阅读 · 0 评论 -
hdu4983 Goffi and GCD(欧拉函数+思维)(好题)
题目链接Problem DescriptionGoffi is doing his math homework and he finds an equality on his text book: gcd(n−a,n)×gcd(n−b,n)=nk.Goffi wants to know the number of (a,b) satisfy the equality, if n and k ...原创 2020-03-20 20:54:45 · 180 阅读 · 0 评论 -
hdu3307 Description has only two Sentences(欧拉定理+数论)
题目链接Description has only two SentencesTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1963 Accepted Submission(s): 585Problem Description...原创 2020-03-20 20:46:12 · 104 阅读 · 0 评论 -
Educational Codeforces Round 58 (Rated for Div. 2) D. GCD Counting(数论+树形DP,好题)
题目链接题意:给定一棵树,要你找出一对点(x,y)的最大距离,同时还必须满足x到y这段路径上的gcd大于1.思路:和树上gcd类似,不过这题的gcd不好求,由于它说只要gcd大于1就行了,那么这条路径上一定存在着共同的因子,我们可以给每个数分解质因子,统计一下点u的它的子树的质因子链最长是多少,比如点u为8,那么我们就是统计一下u的子树中形成的含2的链和含3的链,选最长的那条就行了,如果只...原创 2020-03-13 22:20:02 · 91 阅读 · 0 评论 -
Codeforces Round #554 (Div. 2) C. Neko does Maths(gcd好题)
题目链接题意:给出a和b,求最小的k使得a+k和b+k的最小公倍数最小。思路:一开始想化简式子,结果方向就走错了。。。这里有个gcd的性质gcd(a,b-a),所以gcd(a+k,b+k)=gcd(a+k,b-a)最终的答案就是(a+k)*(b-a)/gcd(a+k,b-a),怎么样才能使它最小呢,如果分子分母能够化简肯定是可以减小的,所以a+k和b-a一定要存在因子可以消,因为b-a是固定...原创 2020-03-12 20:24:21 · 118 阅读 · 0 评论 -
Dasha Code Championship - SPb Finals Round C. Kamil and Making a Strea(树上gcd+dfs)
题目链接思路:一条链上的gcd最多只要log个,且一定是逐级递减的,根据这个性质我们每递归一个节点,保存一下它的所有可能的gcd来计算每个节点的贡献,同时还能降低复杂度,因为gcd不同的个数最多只有log个,所有不会tle。#include<bits/stdc++.h>#define ll long longusing namespace std;const int ma...原创 2020-02-26 20:12:26 · 150 阅读 · 0 评论 -
Codeforces Round #578 (Div. 2) C. Round Corridor(数论gcd)
题目链接思路:我们首先从样例分析,内层被分为4份,外层被分为6份,我们发现内层每2个,外层每3个会形成一个封闭区域,只要在这个封闭区域内的都可以相互到达,我们可以发现封闭区域的个数为gcd(n,m),只要判断一下是否在相同的封闭区域内就可以了。#include<bits/stdc++.h>using namespace std;typedef long long ll;i...原创 2020-02-28 21:40:37 · 114 阅读 · 0 评论 -
hdu 6025 Coprime Sequence(gcd+思维)
题目链接Problem DescriptionDo you know what is called Coprime Sequence''? That is a sequence consists of n positive integers, and the GCD (Greatest Common Divisor) of them is equal to 1.Coprime Sequence...原创 2020-03-01 13:28:24 · 100 阅读 · 0 评论 -
hdu 1788 Chinese remainder theorem again(gcd)
题目链接Problem Description我知道部分同学最近在看中国剩余定理,就这个定理本身,还是比较简单的:假设m1,m2,…,mk两两互素,则下面同余方程组:x≡a1(mod m1)x≡a2(mod m2)…x≡ak(mod mk)在0<=<m1m2…mk内有唯一解。记Mi=M/mi(1<=i<=k),因为(Mi,mi)=1,故有二个整数pi,qi...原创 2020-03-01 13:41:34 · 81 阅读 · 1 评论 -
Codeforces Round #430 (Div. 2) C. Ilya And The Tree(树上gcd+STL)
题目链接思路:可以dfs到该节点时保存一下自身为0时的gcd。#include<bits/stdc++.h>using namespace std;typedef long long ll; const int maxn=2e5+1;int n,u,v,a[maxn];set<int>s[maxn];vector<int>g[maxn];v...原创 2020-03-02 22:02:45 · 91 阅读 · 0 评论 -
Codeforces Round #592 (Div. 2) C. The Football Season(数学+扩展欧几里得)
题目链接思路:这里就贴一个大佬的题解,感觉讲的非常秒,以后忘了可以再看看。#include<bits/stdc++.h>using namespace std;typedef long long ll;ll n,p,w,d;int main(){ scanf("%lld%lld%lld%lld",&n,&p,&w,&d); for...原创 2020-02-19 21:06:13 · 158 阅读 · 0 评论 -
Technocup 2020 - Elimination Round 2 D. Power Products(唯一分解定理+质因子分解+暴力枚举)(妙题)
题目链接思路:由唯一分解定理我们可知,对于一个数a【i】要满足条件的话,a【j】和a【i】必须含有相同的质因子,同时相同质因子的指数和必须是k的倍数才行,一开始想复杂了,想把质因子分开存一个个枚举,其实不用那么麻烦,用map记录一下前面满足条件的1~i-1的质因子数组。#include <bits/stdc++.h>using namespace std;const int ...原创 2020-02-22 22:03:14 · 354 阅读 · 0 评论 -
牛客练习赛48 B 小w的a=b问题(质因子分解)
思路:可以统计一下a数组和b数组的质因子个数,如果有一个质因子的个数不相等即为unequal,如何统计质因子个数呢?如果枚举数组再分解的话特定tle,这里可以先预处理所有的质数,然后统计一下每个质数作为质因子的贡献即可。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn...原创 2020-02-01 20:38:43 · 146 阅读 · 0 评论 -
【洛谷】P2518 [HAOI2010]计数(可重集全排列+简单计数)
思路:对于比当前数字长度小的数字其实可以看成前导0,例如1230和123,其实可以看做1230,0123.这样的话题目就简化成了长度为n的数字的全排列中有多少个小于当前数。首先先介绍可重集全排列怎么求,先看一下我的理解,字有点丑只能忍忍了。。。那么关键我们怎么求可重集全排列中小于当前数的个数呢?这里其实也用的了数位DP的思想,设当前数为X,我们可以枚举X的每一位,假设当前为i,那么如果当前位...原创 2020-02-02 21:18:41 · 307 阅读 · 0 评论 -
2020牛客寒假算法基础集训营1 J u's的影响力(矩阵快速幂+费小马降幂)
题目链接用矩阵快速幂计算x,y,a的幂次。#include<bits/stdc++.h>using namespace std;#define ll long longstruct mt{ ll a[3][3];};mt t(mt a,mt b,ll mod){ mt res; int i,j,k; for(i=0;i<3;i++){...原创 2020-02-05 20:25:16 · 121 阅读 · 0 评论 -
Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence(扩展欧几里得)
题目链接#include<bits/stdc++.h>using namespace std;int gcd(int a,int b){ return b==0 ?a:gcd(b,a%b); } int main() { int T,r,b,k; scanf("%d",&T); while(T--){ scanf("%d%d%d",&...原创 2020-02-10 22:06:02 · 118 阅读 · 0 评论 -
2020 CCPC Wannafly Winter Camp Day1 H 最大公约数(唯一分解定理)
题目链接思路:题意就是说在1-n范围内,只有唯一一个k的gcd(k,y)=k,很明显,答案肯定k的倍数,因此根据唯一分解定理,我们只需枚举k的倍数(1-n/k),如果倍数是质数的情况下,就*ans,否则的话gcd就会变成1。坑点:注意一下要用大数,不会python,果断Java。import java.math.BigInteger;import java.util.Scanner;pu...原创 2020-01-22 20:29:21 · 198 阅读 · 0 评论 -
Educational Codeforces Round 81 (Rated for Div. 2) D.Same GCDs(数论)
题意:给定a和m,问你有多少个x满足gcd(a,m)=gcd(a+x,m)思路:数论题果然还是一如既往的猜结论啊,还是太菜了QAQ。可以看看我的理解。。。字有点丑就忍忍吧,其中gcd(a,m)=gcd(a%m,m)是gcd的一条性质,可以直接拿来当结论记。...原创 2020-01-31 20:34:44 · 145 阅读 · 0 评论