随笔分类 -  数论题题解

摘要:题目链接 题意: 思路:由于n和mod很小,因此可以直接枚举a - [0,10000],然后因为f[3]-a2*f[1]=b*(a+1)用扩展欧几里得求a+1关于MOD的逆元的然后求出b,再去确认ab是否符合。 #include <bits/stdc++.h> using namespace std 阅读全文
posted @ 2020-10-10 13:22 Ldler 阅读(129) 评论(0) 推荐(0)
摘要:题目链接 题意: 思路:对原式化简得(c*f-d*e) / (d*f) = a/b。将a/b进行最简式化简得a1/b1 由此可知 c*f-d*e=a1 d*f=b1 分情况考虑,如果b1!=b 则可以令d=b1 f=1 c=a1+b1 e=1。 反之,因为b=c*f,要求c*f-d*e=a1,这很明 阅读全文
posted @ 2020-10-09 15:56 Ldler 阅读(69) 评论(0) 推荐(0)
摘要:思路:杜教筛模板题。 #include <algorithm> #include <cstdio> #include <cstring> #include <map> using namespace std; const int maxn = 2000010; typedef long long l 阅读全文
posted @ 2020-10-06 19:22 Ldler 阅读(106) 评论(0) 推荐(0)
摘要:题目链接 题意: 其中d(n)代表n的约数个数 思路: #include <bits/stdc++.h> using namespace std; #define int long long const int N = 5e4 + 5; int n, m, T, pr[N], mu[N], d[N] 阅读全文
posted @ 2020-10-05 20:28 Ldler 阅读(103) 评论(0) 推荐(0)
摘要:题目链接 题意: 思路: #include <bits/stdc++.h> using namespace std; #define LL long long const int N = 1e7; const int mod = 20101009; int n, m, mu[N + 5], p[N 阅读全文
posted @ 2020-10-05 17:41 Ldler 阅读(105) 评论(0) 推荐(0)
摘要:题目链接 题意: 思路:首先由容斥定理可得 红色箭头为反演步骤。 最后由数论分块来写。 #include <bits/stdc++.h> using namespace std; #define ll long long const int N = 50000; int mu[N + 5], p[N 阅读全文
posted @ 2020-10-04 20:25 Ldler 阅读(105) 评论(0) 推荐(0)
摘要:题目链接 题意:求∑k mod i 思路:可以化解为 所以,如何求k/i向下取整才是关键,对于一个块k/i=j,我们可以直接求i到j区间的值,i到j区间都为k/i,时间复杂度为sqrt(n)。大体如下证明方法可行性和复杂度 #include <bits/stdc++.h> using namespa 阅读全文
posted @ 2020-10-04 19:29 Ldler 阅读(117) 评论(0) 推荐(0)
摘要:题目链接 题意:求斐波那契第n项,只不过是最后m位。 思路:矩阵快速幂板子 #include <bits/stdc++.h> using namespace std; #define ll long long const int N=52; int mod=1000; struct Matrix { 阅读全文
posted @ 2020-09-30 20:21 Ldler 阅读(114) 评论(0) 推荐(0)
摘要:题目链接 题意:给定一个序列的变换,求变换r次后各项的值。 思路:矩阵快速幂+矩阵变换知识。 #include <bits/stdc++.h> using namespace std; #define ll long long const int N=52; const int mod=1000; 阅读全文
posted @ 2020-09-30 19:42 Ldler 阅读(129) 评论(0) 推荐(0)
摘要:题目链接 题意:给一个A矩阵大小为n*K,B矩阵大小为K*n。求(A*B)^(n*n)的矩阵的所有元素和。n<=1000,K<=6。 思路:首先结构体中最大开800*800,如果直接算就无法运行。所以要想到式子转化为A*(B*A)^(n*n-1)*B。这样只要最多开6*6了 剩下的就都是手写矩阵乘法 阅读全文
posted @ 2020-09-29 19:57 Ldler 阅读(108) 评论(0) 推荐(0)
摘要:题目链接 题意:给定进制base,和分数score,求在base进制下,有多少个数的值为score,要求不能有连续相同的数字以及前导0.计算一个数的值即为相邻两位数的差平方的和。 思路:因为score很大,所以直接dp肯定超时,但是即使对于base=6的情况,每次新添一个数score最大增加25(0 阅读全文
posted @ 2020-09-29 16:00 Ldler 阅读(113) 评论(0) 推荐(0)
摘要:题目链接 题意:求出代码中的值。 思路:两种:第一种打表发现fi=fi-1+2*fi-2+1 第二种: //a[n] = a[n-1] + n%2//a[n] = a[n-1] + (n+1)/2 - n/2 #include <bits/stdc++.h> #include<unordered_m 阅读全文
posted @ 2020-09-28 19:35 Ldler 阅读(102) 评论(0) 推荐(0)
摘要:题目链接 题意:第一行矩阵为23,233,2333...给出第一列的矩阵值,求an,m。 思路:很容易想到矩阵求解 大概就是这样中间一堆都是1. #include <bits/stdc++.h> using namespace std; #define ll long long const int 阅读全文
posted @ 2020-09-28 19:33 Ldler 阅读(123) 评论(0) 推荐(0)
摘要:题目链接 题意: 给出这个式子的x和y,求fn 思路:很明显的矩阵快速幂,[fi,fi-1][{1,1}{-1,0}]=[fi+1,fi] #include <bits/stdc++.h> using namespace std; #define ll long long const int max 阅读全文
posted @ 2020-09-28 19:26 Ldler 阅读(113) 评论(0) 推荐(0)
摘要:题目链接 题意:求和 n<=100000 思路:很明显可以发现对于ans[n]=ans[n-1]+Σi<nlcm(i,n)。所以现在要解决的是Σi<nlcm(i,n)。 下面图片的思路很详细: 所以可以通过线性的方式先求出Σi<nlcm(i,n)。 #include <bits/stdc++.h> 阅读全文
posted @ 2020-09-23 20:35 Ldler 阅读(238) 评论(0) 推荐(0)
摘要:题目链接 题意:给你n和m,令x为前m个素数,一共使用n个的乘积,例如n=3,m=2,则x=2*2*3或x=2*3*3,求所有Φ(x)的和。 思路:用到了欧拉函数的性质,首先对于x为素数,Φ(x)=x-1,然后若n*m=x,则Φ(n)*Φ(n)=Φ(x)。所以我们可以求出前500个素数,然后对其进行 阅读全文
posted @ 2020-09-22 21:00 Ldler 阅读(163) 评论(0) 推荐(0)
摘要:题目链接 题意:求lcm(1,2,3,...,n),n<=1e8; 思路:很容易想到其答案为n之前的所有质因子的最大次幂的乘积。例如n=20,答案就是19*17*13*11*7*5*3^2*2^4。又容易发现可以通过根号n求出前面的最高次幂-1。然后打表前面的素数乘积即可求出答案。 但这题的时间和内 阅读全文
posted @ 2020-09-22 11:03 Ldler 阅读(168) 评论(0) 推荐(0)
摘要:题目链接 题意:给你一个数n(n<=10^14),然后问n能用几个连续的数表示; 思路:设是以x开始的一段数的和为n,且有y个数,n=(x+x+y-1)*y/2。化简为n/y-(y-1)/2=x。因为x为整数,所以(y-1)/2和n/y都为整数。所以y-1为偶数,y为奇数。所以方案的种数就是n的奇数 阅读全文
posted @ 2020-09-18 16:54 Ldler 阅读(172) 评论(0) 推荐(0)
摘要:题目链接 题意:求C(n,r)*p^q最后答案中末尾0的个数。 思路:很明显的思路是分解质因子2和5,可是C(n,r)如何分解呢。可以通过C(n,r)=n!/(n-r)!*r!。只要求出阶乘的因子个数就能得出答案。如何求出阶乘的因子个数,可以想到对于n!求p的质因子个数,在1~n中至少包含一个p的有 阅读全文
posted @ 2020-09-18 16:23 Ldler 阅读(147) 评论(0) 推荐(0)
摘要:题目链接 题意:给你a,b和L,求一个最小的c满足lcm(a,b,c)=L。 思路:这题很容易被误导,求出a,b的最小公倍数为m,此时相当于求lcm(m,c)=L,容易被误导以为c=L/m。实际上L/m并一定不满足lcm(m,L/m)=L。 例如lcm(12,2)!=24。因为当满足lcm(m,L/ 阅读全文
posted @ 2020-09-18 16:14 Ldler 阅读(133) 评论(0) 推荐(0)