数论

辣些数论的思维题(枯了)

折月煮酒 提交于 2019-11-27 03:38:55
BZOJ 2659 算不出的算式 关键是要想到这两个式子的几何意义。 然后如图,以p1=5,p2=3为例子,整个矩形一定是被均分了的。 如上图,单看每一列,绿点把红点分为上下两部分,绿点的位置又是中心对称的,所以整个红点(除了在对角线上的)都被等分到上三角和下三角了。 由于p,q都是质数所以对角线上是不会有整点哒 当p,q相等时,式子变成[1/p] + [2/p] + ... + [ ((p-1)/2) /p ] 由 [ (x+n*p) / p ] =n (x<p) 可知上面的是个有规律的数列。 代码: 来源: https://www.cnblogs.com/jiecaoer/p/11342238.html

正睿金华Day6数论&杂题选讲

Deadly 提交于 2019-11-27 03:13:39
<前言> 好久没写博客了,从Day5开始,那么我就从Day6开始补吧。 等等让我找找day6讲什么的、。。。 偶,是任轩笛讲的,上午讲数论和数论函数,下午杂题选讲。 <正文> 质因数 一开始讲的是质因数的素性测试、质因子分解之类的,听着还挺正常。讲到线性筛的时候感觉还行,就去上了个厕所回来。 素性测试: 试除法,配合质数筛法可以 O ( n ) O(\sqrt n) O ( n ​ ) 解决 这个只要筛出 n \sqrt n n ​ 之内的素数。然后一直试除,能除就除,只要能出就不是素数 Miller-Rabin素性测试, O ( l o g n ) O(log\ n) O ( l o g n ) 完成但可能错误。 这个我没听啊,但大致讲一下吧。 基本原理是费马小定理:若 p 是质数,a, p 互质,则 a p − 1 ≡ 1 ( &VeryThinSpace; m o d &VeryThinSpace; p ) a^{p-1} \equiv 1(\bmod\ p) a p − 1 ≡ 1 ( m o d p ) 于是对于某个 p,若能找到与它互质的 a 使得 a p − 1 ≠ 1 ( m o d p ) a^{p-1} \neq 1(mod\ p) a p − 1 ̸ ​ = 1 ( m o d p ) ,则p不是质数。 然而有一些合数 p,满足所有与它互质的 a 都有 a p

蓝桥杯 友好数 数论

大兔子大兔子 提交于 2019-11-27 00:00:27
题目描述 有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的。例如: 9的约数和有:1+3=4 4的约数和有:1+2=3 所以9和4不是友好的。 220的约数和有:1 2 4 5 10 11 20 22 44 55 110=284 284的约数和有:1 2 4 71 142=220 所以220和284是友好的。 编写程序,判断两个数是否是友好数。 数据规模和约定 两个整数都小于10000 输入 一行,两个整数,由空格分隔 输出 如果是友好数,输出" yes" ,否则输出" no" ,注意不包含引号。 样例输入 220 284 样例输出 yes 思路:求约数,这是一个比较重要的知识点 #include<iostream> using namespace std; int get(int n) { int sum=0; for(int i=1;i<=n/i;++i){ if(n%i==0){ sum+=i; if(n/i!=i){ sum+=n/i; } } } sum-=n; return sum; } int main() { int s1,s2; cin>>s1>>s2; if(s1==get(s2)&&s2==get(s1))cout<<"yes"<<endl; else cout<<"no"<<endl; return 0; } 来源:

学好小学奥数必懂的解题思路 建议家长帮孩子收藏

我怕爱的太早我们不能终老 提交于 2019-11-26 22:27:45
奥数一直是小学数学里的重头戏,各年级的奥数学习有其独立的特点。如果想要系统学习奥数,就需要从整体上有一个把握和规划,那么不同阶段的孩子应该学哪些奥数内容呢?家长不妨一起来看看。 一二年级 1、巧算与速算: 寻找到一定的规律,化繁为简,那么孩子一定能够增强学习数学的信心,提高学习数学的兴趣。另外,计算与速算是各种后续问题学习的基础。学好数学,首先就要过计算这关。 2、学习简单的枚举法: 用数数这种更为直观的方式,将复杂抽象的问题形象化,便于孩子们理解。将抽象问题形象化,引导孩子去主动思考。 三四年级 这个时期是奥数思维形成的关键时期,是学奥数的黄金时段,孩子的计算能力,认知能力,逻辑分析能力会有很大的提高。 1、运用运算定律及性质速算与巧算: 能否又快又准的算出答案,是历年数学竞赛考察的一个基本点,要加强加法与乘法运算定律,其中应用乘法分配率是竞赛中考察巧算的一大重点;除此之外,竞赛中还时常考察带符号“搬家”与添括号/去括号这两种通过改变运算顺序进而简便运算的思路。例如:17×5+17×7+13×5+13×7这种技巧性试题。 重点题型有多位数的计算,小数的基本运算,小数的简便运算等。其中,多位数的计算主要以通过缩放讲多位数凑成各位数全是9的多位数,再利用乘法的分配率进行计算。重点在于以基础计算为主,掌握各种简便运算技巧,提高准确度和速度。 2、平均数应用题: “平均数

数论(持续更新)

此生再无相见时 提交于 2019-11-26 19:50:53
   1 .整除:     设a,b为 整数 ,且a不为0,如果存在一个整数q,使得a*q=b,则b能被a 整除 ,记为a|b,且称b是a的倍数,a是b的因子。     整除的几个性质:    (1)如果a|b且b|c,则a|c ;     (2)a|b且a|c等价于对于任意的 整数 x,y,有a|(bx+cy) ; ( 设b=am,c=an 则bx+cy=amx+any=a(mx+ny) ) (3)设m不为0,则a|b等价于ma|mb ;     (4)设整数x,y满足下式:ax+by= 1 ,且a|n,b|n,那么(ab)|n ; ( 设 n = as=bt 则n/(ab)=1*n/(ab)=(ax+by)*n/(ab)=(axn+byn)/(ab)=x n /b+y n /a = tx+sy为整 )     (5)若b=q*d+c,那么d|b的充要条件是d|c ; 来源: https://www.cnblogs.com/bolerat/p/11331532.html

数论逆元

僤鯓⒐⒋嵵緔 提交于 2019-11-26 19:24:50
1 什么是逆元 2 存在逆元的条件是什么 3 怎样求一个数的逆元 1.[ 欧几里得扩展] 2. 费马小定理 (最常用) 4 扩展(常用) 1. 线性逆元(常用) 2 快速阶乘逆元(常用) 逆元是数论之中的一个重要概念 参考博客 ACdreamer 参考书籍 《高中数学 选修 4-6》 1 什么是逆元 这里写图片描述 2 存在逆元的条件是什么 3 怎样求一个数的逆元 1.[ 欧几里得扩展] 不懂的点这里 a∗b+n∗t=1 long long ex_gcd(long long a,long long b,long long &x,long long &y) { if(b == 0) { x = 1; y = 0; return a; } long long m = ex_gcd(b,a%b,y,x); y -= a/b * x; return m; } int main() { long long a,b,x,y; cin>>a>>b; //求a 关于b的逆元 if(ex_gcd(a,b,x,y)==1) cout<<(x%b+b)%b<<endl; else cout<<"None"<<endl; return 0; } 2. 费马小定理 (最常用) 如果n 是素数,费马小定理 a(n−1)=1 (mod n) a(n−1)=1 (mod n),那么a关于n的逆元就 是a^(n−2

数论(未完成)

浪子不回头ぞ 提交于 2019-11-26 17:58:36
一、gcd gcd(a,b)=gcd(b,a) gcd(a,b)=gcd(-a,b) gcd(a,b)=gcd(|a|,|b|) gcd(a,0)=|a| gcd(a,k*a)=|a| gcd(a*n,b*n)=n*gcd(a,b) 若d|a且d|b,则d|gcd(a,b) 若n|ab且gcd(a,n)=1,则n|b 若gcd(a,p)=1且gcd(b,p)=1,则gcd(a*b,p)=1 来源: https://www.cnblogs.com/Moxingtianxia/p/11329894.html

A Horrible Poem (字符串hash+数论)

半城伤御伤魂 提交于 2019-11-26 15:02:46
【题目链接】 # 10038. 「一本通 2.1 练习 4」A Horrible Poem 【参考博客】 A Horrible Poem (字符串hash+数论) 【题目描述】 给出一个由小写英文字母组成的字符串 S S,再给出 q q 个询问,要求回答 S S 某个子串的最短循环节。 如果字符串 B B 是字符串 A A 的循环节,那么 A A 可以由 B B 重复若干次得到。 【算法】-首先对于长度为 l e n len 的子串,循环节长度为 x x 的充要条件: [ 1 , l e n − x ] [1,len−x]串的哈希值等于 [ x + 1 , l e n ] [x+1,len] 串的哈希值。 假设最短循环节长度为len则原串长度显然为len*k。若只考虑k,并且将k的质因数依次分解,每次试除k,则得到的 k 。 k。和len的乘积仍是循环节,利用这个性质。依次用质因数 i i 试除n,若除去后仍是循环节,说明i属于k,将其除去,结果就留下了len。 【代码】: 1 #include<cstdio> 2 #include<bitset> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 typedef unsigned long long ULL ; 7 const int N =

【HYSBZ 1257】余数之和 数论分块(棒读)

时光毁灭记忆、已成空白 提交于 2019-11-26 09:28:47
其实很多人都说是打表找个规律就过了,不过既然我们是来学分块的,当然要用相应的知识去做, 考试的时候再打表 。 分块可以把一些O(n)或复杂度更高的过程优化到O(√n)。对于整数n及i(1 < i < n),floor(n/i)的结果最多有2√n种(分i <√n和i > √n两种情况来考虑一下),又floor(n/i)相等的i可能有多个,手写式子简单推一下可以算出来满足floor(n/i)==d的所有i,其所处的区间为[i,floor(n/(n/i))]。这样我们就可以划分出最多2√n个区间。 好了到这里我们就学会了分块(?)。 看题: 余数之和 看完题自己写了几组数,发现分块后的每个区间内,k%i组成公差为k/i的等差数列,对每个区间求和累加就是最终答案。 AC Code: #include < iostream > //开始时想错了,代码改了几次,有点乱了 #include < cstdio > #include < algorithm > #include < cstdlib > #include < cstring > #include < string > #include < cmath > #define ll long long using namespace std ; int main ( ) { ll n , k , ans = 0 ; ll l = 2 , r