![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论初级
文章平均质量分 84
gerayking
默默努力,享受过程,不问前程
展开
-
Min25筛详解
Min25筛详解min25筛有什么用?目的: 求出∑i−1Nf(i)\sum_{i-1}^Nf(i)∑i−1Nf(i)的前缀和,其中前置条件为f(i)f(i)f(i) 当i为素数时,能够用iki^kik表达,例如f(i)=i1+i2+i3f(i)=i^1+i^2+i^3f(i)=i1+i2+i3等形式,常见的有ϕμ\phi \quad \muϕμ函数。f(i)f(i)f(i)是积性函数怎么求?分两步走处理素数处理合数处理素数素数部分∑i=1N[i∈prime]f(i)原创 2020-11-25 21:42:21 · 1824 阅读 · 1 评论 -
UVA - 10325
题解: 根据容斥定理,Ans = 0个数能被整除-1个数能被整除+任意两个数的积能被整除的个数-任意三个数的积能被整除的个数+ ··· +然后m只有15,考虑暴力遍历m的所有情况,根据奇偶判断加减即可#include<bits/stdc++.h>using namespace std;#define ll long long/* * 题解: 根据容斥定理, * Ans = 0个数能被整除-1个数能被整除+任意两个数的积能被整除的个数-任意三个数的积能被整除的个数+ ··· +原创 2020-05-22 01:13:47 · 121 阅读 · 0 评论 -
十七届同济大学程序设计预选赛-J
题目链接十七届同济大学程序设计预选赛-J思路我们从这个开始考虑Fk′(n)=∑i=1n(n−i)kFib(i)Fk′(n+1)=∑i=1n(n−i+1)kFib(i)\begin{aligned}F'_k(n)&=\sum_{i=1}^n(n-i)^kFib(i)\\F'_k(n+1)&=\sum_{i=1}^n(n-i+1)^kFib(i)\\\end{aligned}Fk′(n)Fk′(n+1)=i=1∑n(n−i)kFib(i)=i=1∑n(n−i+1)kFib原创 2020-05-11 13:19:13 · 103 阅读 · 0 评论 -
gym-102055-RSA加密-欧拉降幂
题目链接gym102055思路首先要明白一个模运算的性质(a ^ b) % p = ((a % p)^b) % p令e=230+3,r=(q−1)(p−1)令e=2^{30}+3,r=(q-1)(p-1)令e=230+3,r=(q−1)(p−1),找到e在模n下的逆元d,de=1(mod n)找到e在模n下的逆元d,de=1(mod\ n)找到e在模n下的逆元d,de=1(mo...原创 2020-04-02 00:05:01 · 213 阅读 · 0 评论 -
二次剩余定理详解
title: 二次剩余定理详解date: 2019-09-10 13:09:36tags:- 数论mathjax: true二次剩余x2≡n(mod p)x^2≡n(mod\ p)x2≡n(mod p)对于这个方程,求出满足的x。引理1首先来看一个符号(np)(\frac{n}{p})(pn)这个符号叫做勒让德符号,这个符号里有两个值,一个是n,一...原创 2020-03-03 16:03:13 · 6115 阅读 · 1 评论 -
中国剩余定理详解
title: 中国剩余定理详解date: 2019-08-17 18:49:14tags:- 数论mathjax: true中国剩余定理与扩展中国剩余定理首先来看这个方程{x≡a1(mod b1)x≡a2(mod b2)x≡a3(mod b3)⋯x≡an(mod bn)\begin{cases}x≡a_{1}(mod\ b_1)\\x≡a...原创 2020-03-03 16:02:40 · 1941 阅读 · 2 评论 -
组合数1000内
组合数 C<1000;利用递推快速得到C[n][m]=C[n-1][m-1]+C[n-1][m];int C[1001][1001];void Init(){ C[0][0]=1; fin(1,1000) { C[i][0]=1; } fin(1,1000) { for(int j=1;j<=i;j++) { ...原创 2019-03-27 21:36:00 · 272 阅读 · 0 评论 -
中国剩余定理与扩展中国剩余定理
中国剩余定理又名孙子定理用来求解同余线性方程组其中m1,m2,m3…两两互质,求x的最小整数解;设M为m1,m2,m3…的公倍数。根据上面的推导,为什么x的通解形式是累加呢?根据上面推导,推导出x的解,接下来就可以开始写题了。https://www.luogu.org/problemnew/show/P3868 一道模板题附上完整代码#include<bits/stdc...原创 2019-04-01 22:05:10 · 436 阅读 · 0 评论 -
同余方程
数论-同余方程给出一个新记号a≡b(mod)n上式的含义为:“a和b关于模n同余”可以理解为a%n==b%n充要条件为a≡b(mod)n <=> a-b是n的整数倍。例题 1输出正整数,解方程ax≡b(mod n).a,b,n<=10e9;由上可知ax-b=ny得到ax-ny=b;这个方程是一个不定方程,也可以叫做丢番图方程。换种写法也就是...原创 2019-03-28 17:10:35 · 1524 阅读 · 0 评论 -
Light OJ-1370
https://cn.vjudge.net/problem/LightOJ-1370题意要求;给了一个函数 φ(x)函数的意义:至少与x个数互质的最小整数例如φ(6)=9;9与1,2,4,5,7,8互质;题目给出n个数求Sum=φ(a1)+φ(a2)…+φ(an);所以我们需要把φ这个函数求出来;实际上这个函数有一个学名叫做欧拉函数。这就是欧拉函数的性质,根据第一个式子的关系,...原创 2019-03-28 18:35:08 · 222 阅读 · 0 评论 -
POJ 2478
一道欧拉函数前缀和的模板题直接上板子+前缀和就完事了(贡献了一发WA 给long long int)#include<cstdio>#include<iostream>#include<string>#include<cstring>>using namespace std;#define ll long lon...原创 2019-04-07 23:57:50 · 191 阅读 · 0 评论 -
Light OJ1341
博客里前两天写过的题···以为自己不会写了,结果把prime 和p数组写错了···浪费了宝贵的睡觉时间···记录一下debug之路吧#include<bits/stdc++.h>using namespace std;#define ll long long int#define fin(a,n) for(int i=a;i<=n;i++)const int maxn=...原创 2019-03-29 00:26:04 · 121 阅读 · 0 评论 -
快速傅里叶变换-初步想法
快速傅里叶变换就是执行多项式乘法。朴素算法的话就是我们普通乘法的过程,复杂度是n^2。但是用傅里叶,可以打倒nlogn的复杂度。好,首先给出两个式子朴素的算法就不讲了。首先来讲一种点集表示方法。对于f(x),把a当作未知数的话,一共有n个未知数,然后把f(x)看成一个函数的话,解出这n个未知数需要n个点,所以我们可以把f(x)和g(x)表示成下面这种形式...原创 2019-06-25 21:44:35 · 173 阅读 · 0 评论 -
矩阵快速幂+欧几里得
> gcd(F[n],F[m])=F[gcd(n,m)] 斐波那契数列与欧几里得的应用上面的公式,证明结果可以自行查阅(其实我不会 )https://www.luogu.org/problemnew/show/P1306题目如上矩阵快速幂可以得到斐波那契;然后根据上面的公式就得到答案了代码如下#include<bits/stdc++.h>usin...原创 2019-03-27 23:05:11 · 85 阅读 · 0 评论 -
数论约数
数论,公约数落谷p1414根据题意,统计每个因数出现的个数,然后从大到小依次找出就好了;#include<bits/stdc++.h>using namespace std;#define fin(a,n) for(int i=a;i<=n;i++)#define ll long long intconst int inf=1e6+10;const int max...原创 2019-03-27 20:15:57 · 192 阅读 · 0 评论 -
Light OJ 1282
题意 求n^k的前三位和后三位。后三位很简单,用快速幂对1000求余就好了,问题是前三位呢?这里要用到对数来求解,给出下图解答过程看到上面的式abc就是我们需要的前三位数,只要用klogn-这个数的长度就好了,这个数的长度实际上就是klogn取整。以上log均以10为底数。代码如下#include<bits/stdc++.h>using namespace std;#...原创 2019-03-29 17:57:36 · 322 阅读 · 0 评论 -
Light OJ 1256
···这题,有坑,但是很有营养。一开始以为可以用数论的什么方法,然后就瞎推,结果没写出啥来,就百度了。发现暴利过了,还是赤裸裸的卡内存,至少学到了bool很省内存#include<bits/stdc++.h>using namespace std;#define ll long long int#define fin(a,n) for(int i=a;i<=n;i++...原创 2019-03-29 20:38:00 · 168 阅读 · 0 评论 -
UVA 11426
欧拉函数+GCD题目大意 求下面这个看了很多blog···感觉都讲的很不清楚(看不懂),肯定是我太弱了。所以我决定自己写一篇,然后看看能不能在写的过程中弄清楚。因为脑子可能没别人好用,看文字很难看出个所以然,所以我学习一般都需要例子来加以理解,我也认为这样可以让人更加清晰的理解我想表达什么。如果有错误,不吝请教。然后考虑一下数据范围···暴利绝对T的。然后开始分析题...原创 2019-04-03 21:49:48 · 390 阅读 · 0 评论 -
Light OJ 1234
这道题···吃了没学过调和级数求和的大亏。具体来说是有一个公式:也就是ans=log(x)+r+1.0/(x*2);这里的r指的是欧拉常数,算出来的r=0.5772156649015328606060651209;但是这个算法是有误差的x离1越远误差越小,所以我们要先暴利出前半段的部分,后面误差小的时候再用公式求代码如下#include<bits/stdc++.h>usi...原创 2019-03-30 14:02:11 · 124 阅读 · 0 评论 -
Light OJ 1220
这道题,有坑。题目要求x=b^p.中p的最大值,b可以是任意数。根绝唯一分解定理,我们只需要求出每个素因子的指数的最小公约数,也就是gcd(a1,a2,a3…an);为什么呢?看下图但是···此题的坑点就在于,x可以是负数,那怎么办呢?举个例子:如果是(-27)=(-3)^3,那么这个答案更正数没区别,可以直接换成正数计算,但是-25!=(-5)^2所以p只能为1,这时候我们发现...原创 2019-03-30 14:57:12 · 121 阅读 · 0 评论 -
Light OJ 1214
这道题就是高精度取余的做法,能不能整除,其实正负并没有影响,所以直接高精度取余判断非0就好了#include<bits/stdc++.h>using namespace std;#define ll long long int#define fin(a,n) for(int i=a;i<=n;i++)const int maxn=250;int f(string a,...原创 2019-03-30 15:16:15 · 137 阅读 · 0 评论 -
Light OJ 1231
这道题读懂题意之后用到同余方程+快速幂就出来了。题目中最后得到的数就是res=sum*n^(k-1)*k。为什么呢?把题目的程序贴在编译器上自己调试一下就的出来了。sum指的是数列里的的和。之后就很简单了。#include<bits/stdc++.h>using namespace std;#define ll long long int#define fin(a,n) fo...原创 2019-03-30 17:55:19 · 146 阅读 · 0 评论 -
Light OJ 1197
求a-b范围内素数的个数先打素数表,然后在范围内排除非素数就好了。https://cn.vjudge.net/problem/LightOJ-1197#include<bits/stdc++.h>using namespace std;#define ll long long int#define fin(a,n) for(int i=a;i<=n;i++)cons...原创 2019-03-30 19:09:35 · 148 阅读 · 0 评论 -
Light OJ 1138
这题,一开始我通过打表找规律,后面WA了几发,发现应该不是那么做。然后开始分析,0是怎么出现的?10!两个0?101出一个,52出一个。15!三个0?154出一个,101出一个,52出一个。到这里不难发现了,只要在乘法中,出现5的倍数就会让0躲起来,那么多多少个呢?那当然是5的个数,为什么?因为例如25! 25可以拆成55,那这两个5去寻找任意的因数都能出1个零,所以我们只要找5的因子个...原创 2019-03-30 20:32:11 · 160 阅读 · 0 评论 -
唯一分解定理
数论开始唯一分解定理这里以一个例子作为讲解http://lightoj.com/volume_showproblem.php?problem=1341题目给两个数 a b,要求我们求[1,a]的因数对数,并且这对因数在[b,a]之间。思路:求出a的全部因子/2=从[1,a]的全部因子对数,求出[1,b)中a的因因子个数,有一个在外面那么肯定有一个在[b,a]内,所以用全部的因子对数减去[...原创 2019-03-26 20:08:42 · 1455 阅读 · 0 评论 -
扩展欧几里得
扩展欧几里得经典问题,找出一对整数,使得ax+by=gcd(a,b)gcd表示最小公约数,代码附上:int gcd(int a,int b){ return b?gcd(b,a%b):a;}假设上述函数的一个特解(x0,y0)根据二元一次不定方程的解法可得x=x0+b/gcd;y=y0-a/gcd;得到它的通解形式,所以我们只要求出它的一个特解就好了,怎么求这个特解呢?让我...原创 2019-03-26 21:49:55 · 151 阅读 · 0 评论 -
UVA 11754
这道题的题面意思就是给出C,S,C代表着条件个个数,S代表你要输出答案的个数(因为肯定有多个答案);然后下面有C行,每行有先是X,k;然后后面紧跟着k个数字。满足这个条件的情况就是N%X=k1,k2...ki;要你求出最小的N满足这C个条件;看题面,就知道肯定有关中国剩余定理。有两种方法:第一,强行暴利枚举,也就是从全部条件的k中,找出所有的组合,用扩展中国剩余定理就能得到...原创 2019-04-04 23:51:43 · 470 阅读 · 0 评论 -
数论superGCD 高精度GCD
高精度GCDhttps://www.luogu.org/problemnew/show/P2152是一道模板题,因为不会phython,所以···只能老老实实写高精度。这里我们用到更相减损法求公约数。看首先,根据上面的步骤,分析他们是否是偶数,所以需要检查每个大数的最后一位;直到两个都是奇数,然后用大数减去小数,减去之后再重复之前的操作,然后把最后的数乘上若干个2就可以了;分析操作过程,我...原创 2019-03-27 18:42:08 · 423 阅读 · 0 评论 -
Light OJ 1336
数论之欧拉函数约束和题目链接:https://vjudge.net/contest/223051#problem/D题目大意,有一个函数f(x),由x->f(x)的映射法则为,f(x)表示x的所有约数和。题目要求的是φ(n)即从 i从1~n中的f(i) 有多少个为偶数。这题的f(x)可以用唯一分解定理求出约数和,但是一看数据范围10e12,暴利的话必定会T,所以肯定要运用到数论的知识...原创 2019-03-29 16:21:57 · 179 阅读 · 0 评论