![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
live4m
老菜逼了
展开
-
欧拉定理
欧拉定理:设m是一个正整数,a是一个整数且gcd(a,m)=1,那么aφ(m)≡1(mod m)模n的既约剩余系:模n的既约剩余系是由φ(n)个整数组成的集合,集合中每个数均与n互质,且任何两个元素模n不同余。例如:{1,3,5,7}是模8的一个既约剩余系,把集合中的元素都乘3变为{3,9,15,21},这又是模8的一个既约剩余系。...原创 2020-01-31 14:22:18 · 1803 阅读 · 0 评论 -
同余方程
模板:int exgcd(int a,int b,int &x,int &y){ if(!b){ x=1,y=0; return a; }else{ int d=exgcd(b,a%b,x,y); int t=x; x=y; y=t-a/b*y; ret...原创 2020-01-31 14:21:52 · 959 阅读 · 0 评论 -
CodeForces 1047 C.Enlarge GCD (gcd+质因子分解+思维)
题意:给长度为n的数组,假设当前数组的gcd为k问最少删除多少个数能使得数组的gcd变大思路:先求出初始数组的gcd=k把所有数除以k,然后对每个数质因子分解,记录每种质因子出现的次数出现次数最多的质因子一定是新gcd的因子,假设出现p次,则出现新gcd最多保留p个数,因此答案就是n-p如果p为0说明无解需要素数线性筛质因子分解的时候如果prime[j]*prime[j]>...原创 2020-01-29 14:31:47 · 225 阅读 · 0 评论 -
bzoj2440 完全平方数 (二分+容斥+莫比乌斯函数)
问题描述小 X 自幼就很喜欢数。但奇怪的是,他十分讨厌完全平方数。他觉得这些数看起来很令人难受。由此,他也讨厌所有是完全平方数的正整数倍的数。然而这丝毫不影响他对其他数的热爱。这天是小X的生日,小 W 想送一个数给他作为生日礼物。当然他不能送一个小X讨厌的数。他列出了所有小X不讨厌的数,然后选取了第 K个数送给了小X。小X很开心地收下了。然而现在小 W 却记不起送给小X的是哪个数了。...原创 2020-01-25 16:17:58 · 145 阅读 · 0 评论 -
莫比乌斯反演
莫比乌斯函数线性筛const int maxm=1e6+5;int notprime[maxm];int prime[maxm],cnt;int mob[maxm];void Minit(){ mob[1]=1; for(int i=2;i<maxm;i++){ if(!notprime[i]){//如果是素数 prime[c...原创 2020-01-26 15:44:06 · 257 阅读 · 0 评论 -
整除分块
整除分块计算 ∑ ⌊ n / i ⌋直接O(n)可解但是有许多⌊ n / i ⌋ 的值是一样的,且值相同的连续每一段相同的数,最后一位的位置为n/(n/i)有这个结论之后就可以O(√n)计算了code:int ans=0;for(int l=1,r;l<=n;l=r+1){ r=n/(n/l); ans+=(r-l+1)*(n/l);}其他用途:学到了...原创 2020-01-23 18:10:28 · 171 阅读 · 0 评论 -
hdu5512 Pagodas (gcd求等差数列最小公差)
Problem Descriptionn pagodas were standing erect in Hong Jue Si between the Niushou Mountain and the Yuntai Mountain, labelled from 1 to n. However, only two of them (labelled a and b, where 1≤a≠b≤n)...原创 2019-11-21 17:43:58 · 122 阅读 · 0 评论 -
hdu6025 Coprime Sequence (前后缀gcd)
题意:给一个互质序列,序列的gcd为1.现在要删除一个数,问删除一个数之后序列的gcd最大值是多少输出最大值思路:求出前缀和后缀gcd,然后枚举每个数作为删除的数用这个数左边的前缀gcd和这个数右边的后缀gcd求两边的gcd取max就是答案code:#include<bits/stdc++.h>using namespace std;const int maxm=1...原创 2019-11-18 21:16:01 · 141 阅读 · 0 评论 -
CodeForces1243 C.Tile Paintin (数论gcd)
题意:给排成一行的 n 个格子,要求所有的 i,j 满足 |i−j| 是 n 的因子的,都要同色,求最大的涂色数。ExamplesInput4Output2Input5Output5思路:code:...原创 2019-11-07 18:46:09 · 188 阅读 · 0 评论 -
hdu1124 Factorial (求n的阶乘末尾0的个数)
题意:给n,求n的阶乘末尾的0的个数思路:若要末尾出现0,则需要乘数提供2和5提供的2肯定比5多(因为每一个偶数都可以提供2)所以末尾0的个数就是n!中所能提供的5的个数而n!能提供的5的个数可以由因子推出。例如 10!,乘数5本身提供一个5,10也提供一个5,所以10!=3628800末尾有两个零。可以推出n!里能被 5 整除的数的个数为 n/5,但是在这些数里还有一部分能被 ...原创 2019-09-30 13:45:19 · 165 阅读 · 0 评论 -
hdu2522 A simple problem (求1/n循环节,除法模拟)
Problem DescriptionZty很痴迷数学问题.。一天,yifenfei出了个数学题想难倒他,让他回答1 / n。但Zty却回答不了_. 请大家编程帮助他.Input第一行整数T,表示测试组数。后面T行,每行一个整数 n (1<=|n|<=10^5).Output输出1/n. (是循环小数的,只输出第一个循环节).Sample Input4237168...原创 2019-09-18 12:22:27 · 186 阅读 · 0 评论 -
poj2407 Relatives (单个数的欧拉函数值)
题意:输入n,输出n的欧拉函数值思路:模板题code:#include<cstdio>#include<iostream>using namespace std;#define int long longint e(int n){ int ans=n; for(int i=2;i*i<=n;i++){ if(n%i==...原创 2019-09-16 21:11:53 · 111 阅读 · 0 评论 -
exgcd、inv、phi模板
GCD//递归int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}//非递归int gcd(int a,int b){、 while(b){ a=b,b=a%b; } return a;}exgcd//版本1void exgcd(int a,int b,int &x,int &a...原创 2019-09-03 16:25:06 · 172 阅读 · 0 评论 -
poj2126 Factoring a Polynomial (判断多项式在实数域内是否可分解)
题意:给多项式的次数n让给n+1个系数(xn一直到x0的)判断该多项式在实数域内能否分解为两个多项式相乘分析:根据实系数多项式因式分解定理 :每个次数大于零的实系数多项式都可以在实数域上唯一地分解成一些一次或二次不可约因式的乘积。如果次数大于2的情况一定可以分解。如果次数等于2,用b2-4ac判断是否有根,如果有实数根就可以分解如果次数小于2,一定不能分解code:#inclu...原创 2019-08-08 22:37:13 · 759 阅读 · 0 评论 -
欧拉函数
欧拉函数:1-n中与n互质的数的个数//单个数的欧拉函数值int phi(int n){ int ans=n; for(int i=2;i<=sqrt(n);i++){ if(n%i==0){ ans=ans/i*(i-1); while(n%i==0)n/=i; } } if...原创 2020-01-23 21:04:41 · 805 阅读 · 0 评论 -
codeforce1174C. Ehab and a Special Coloring Problem
1174C.题意:给定一个整数n。对于从2到n的每个整数i,分配一个正整数ai,使以下条件成立:对于任意一对整数(i,j),如果i和j互素, ai≠aj。所有ai的最大值都应该最小化(即尽可能小)。如果一对整数的最大公约数是1,那么它们互素。输入唯一一行包含整数n(2≤n≤105)。输出打印n - 1个整数,a2, a3,…,an(1≤ai≤n)。如果有多个解决方案,请打印其中...原创 2019-06-04 20:56:54 · 255 阅读 · 0 评论 -
uva11752 The Super Powers (数论+枚举) 详解
问题描述我们都知道这个世界上的超级大国是如何在政治斗争中取得优势的甚至在其他领域也是如此。但这不是一个政治平台,所以我们将讨论另一种超级大国-“超级大国的数字”。一个正数被称为超级大国,当它是至少两个不同正整数的幂。例如64是一个超级幂64 = 8264 = 43。您必须编写一个程序,列出1和264 - 1(包括)内的所有超级能力。输入这个程序没有输入。输出打印1和264 - ...原创 2019-06-13 08:42:48 · 167 阅读 · 0 评论 -
素数判定
试除:bool isprime(int x){ if(x==1)return 0; for(int i=2;i<=sqrt(x);i++){ if(x%i==0){ return 0; } } return 1;}筛选法:埃筛:O(n*loglogn)const int maxm=1e7;i...原创 2019-07-17 23:41:55 · 224 阅读 · 0 评论