![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
——数论——
文章平均质量分 61
chen_minghui
这个作者很懒,什么都没留下…
展开
-
csu 2016年湖南省第十二届大学生计算机程序设计竞赛Problem A 2016
Description 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数。 Input输入包含不超过 30 组数据。 每组数据包含两个整数 n,m (1≤n,m≤109). Output对于每组数据,输出一个整数表示满足条件的数量。Sa原创 2017-03-19 22:01:17 · 276 阅读 · 0 评论 -
51nod 1119 机器人走方格 V2
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119题意一个机器人从左上走到左下,每次只能往下或往右走,问最后到达右下时能有多少种方法。思路1.如果n,m小的话可以递归求解,但是这里n,m太大,数组开不了。我们取一个小一点的n,m。用递推填表,可以发现表是一个杨辉三角。杨辉三角在第n行第m列的值为C(n-1,原创 2017-08-09 12:07:00 · 369 阅读 · 0 评论 -
1283 最小周长
题目: 一个矩形的面积为S,已知该矩形的边长都是整数,求所有满足条件的矩形中,周长的最小值。例如:S = 24,那么有{1 24} {2 12} {3 8} {4 6}这4种矩形,其中{4 6}的周长最小,为20。 Input 输入1个数S(1 <= S <= 10^9)。 Output 输出最小周长。 Input示例 24 Output示例 20 思路:因数分解选出答案就可以了原创 2017-08-01 20:53:34 · 284 阅读 · 0 评论 -
51 nod 1240 莫比乌斯函数 (质因数分解)
题目:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1240#include#include#include#include#include#include #include#include#include#include#include#include#include#define cl原创 2017-07-31 12:30:48 · 358 阅读 · 0 评论 -
poj 2891 Strange Way to Express Integers 扩欧解模线性方程
题意:k对数(a,r)问是否能找到m%ai=ri.能找到输出最小的m,否则输出-1思路:m%a1=r1 (1m%a2=r2 (2m%a3=r3 (3。m%ak=rka,r均为任意输入。不能直接用中国剩余定理。将1,2方程联立 得a1*x+a2*y=r2-r1用exgcd求出最小正整数解x0。特解为X=x0+k*(a2/d) d=gcd(a1,a2) 直接记得原创 2017-07-14 22:31:34 · 287 阅读 · 0 评论 -
Codeforces 633B - A Trivial Problem 推理
题意:输入一个m,将所有的满足条件的数输出。条件为它的阶乘后m均为0.思路:最后一个为数出现0的数是5的阶乘。因为含有5*2=10.所以有一个零。2每个偶数都可以提供。所以记录5出现几次,就有几个零#include#define ll long longconst int maxn = 1e6+10;int a[maxn];//a[i]代表a[i]的阶乘末尾有几个零 int mai原创 2017-07-15 22:25:27 · 239 阅读 · 0 评论 -
CodeForces - 710D Two Arithmetic Progressions 扩欧同余方程
题意:给一个式子x=a1*k+b1=a2*l+b2.(k,l>=0) ,问有多少满足条件的x属于[L,R].a1,a2,b1,b2,L,R已知思路:化为同余方程x%a1=b1 (1x%a2=b2 (2化为a1*n1+a2*n2=b2-b1.用扩展欧几里得解出最小正整数解n0.代入之后得X=a1*n1+b1原创 2017-07-15 15:25:15 · 271 阅读 · 0 评论 -
codeforces 7C Line
题意:给条直线方程,Ax+By+C=0问是否存在整数x,y满足方程.存在任意输出,否则输出-1思路;直接套欧几里得解出来。#include#define ll long longusing namespace std;void exgcd(ll a,ll b,ll &d,ll &x,ll &y){ if(!b) { x=1;y=0;d=a; } else { ex原创 2017-07-14 22:39:08 · 339 阅读 · 0 评论 -
codeforces 797B Odd sum
题意:给定一个整型序列,求得其中一个子序列,其和为奇数,且和是所有子序列中最大的。输入的数据保证一定包含和为奇数的子序列思路:所有正数相加得sum,如果为奇数,sum即答案,否则答案为Max(sum-mi,sum+mx)mi为最小正奇数,mx为最大负奇数#include#include#define ll long longusing namespace std;const int原创 2017-05-22 19:41:16 · 312 阅读 · 0 评论 -
codeforces 805A - Fake NP
题意:给定一个区间,从区间所有整数中,包含边界l,r,找出他们共同约数出现次数最多的数,将其打印思路:lr区间中一定有偶数,否则l,r相等,任意输出一个即使,偶数都有约数2,而奇数没,所有答案为2 =_=#includeint main(){ int l,r; while(~scanf("%d%d",&l,&r)) { if(l==r) printf("%d\n",l);原创 2017-05-22 09:47:14 · 245 阅读 · 0 评论 -
codeforces 789A - Anastasia and pebbles
题意:一个人有两个口袋,她要每天都要从路上带走一些石头,路上的石头有n种,每种有ai块,她的每个口袋最多装k个石头,并且强迫症不允许她将石头混合。所以一个口袋只能装一种。她每天只来一次,求最少次数将所有石头带走。思路:因为两个口袋容量一致。所以可以先看成每一次只装一个口袋,求得总次数再除个2,可能会单出一个,就要向上取整。#include#include#includeusing n原创 2017-05-19 16:32:29 · 2219 阅读 · 0 评论 -
codeforces 808B - Average Sleep Time
题意:给定一组数,每k个长度求一次和,求平均值#include#includeusing namespace std;int a[2*100001];int main(){ int n,k; //freopen("in.txt","r",stdin); while(~scanf("%d%d",&n,&k)) { int num=n-k+1; double su原创 2017-05-18 22:02:03 · 348 阅读 · 0 评论 -
codeforces 793A Oleg and shares
题意:可以在数组a中,对任意一个元素进行减k操作,问最少操作多少次使得所有a的元素相等,若不能做到输出-1思路:选取a数组中的最小元素m,无解的条件为存在(ai-m)%k!=0,(0=还有一种思路:http://blog.csdn.net/harlow_cheng/article/details/70568269但是不懂证明#includeconst int maxn = 1e5原创 2017-05-18 17:12:46 · 271 阅读 · 0 评论 -
codeforces 804A - Find Amir 贪心找规律
题意:有编号为1~n的学号,某人要从某一点开始,顺序访问所有学校,编号I到j的旅费为(i+j)%(n+1),求拜访完所有学校后的最小费用思路:两学校的编号之和要接近n+1,学校按从1~n排,每次从选取两端的学校,就是最小的,然后就有规律可以找#includeint main(){ int n; while(scanf("%d",&n)!=EOF) { int ans=(n-1原创 2017-05-18 15:18:29 · 370 阅读 · 0 评论 -
codeforces 773A Success Rate 二分
题意:某人很喜欢一个比例p/q.现在他在oj上交题,成功率为y/x,为了使成功率到达他最喜欢的比率,他该交多少题,如果无法达到,输出-1思路:假设交题ac次数为B,交题总数Ap/q = y+B/x+A => (p*k)/(q*k) = x+B/y+AA+B = p*k => B=p*k-xx+A = q*k => A=q*k-y and A>=B k越小,A和B越小原创 2017-05-18 12:14:30 · 441 阅读 · 0 评论 -
51 nod 1126 求递推序列的第N项 矩阵快速幂
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1126 题意:有下面这个式子:F1=1,F2=1.F[n]=(A*F[n-1]+B*F[n-2])%7 (n>=3) . 求给定A,B,N,求F[N]. 智障一样的找了一个小时:1.矩阵式n-2次方,2,F1=1,不是等于0啊。#include<cstdio原创 2017-08-06 17:16:01 · 265 阅读 · 0 评论 -
hdu 1576 A/B 求逆元模板题
一些基本概念:乘法逆元,是指数学领域群G中任意一个元素a,都在G中有唯一的逆元a‘,具有性质a×a'=a'×a=e,其中e为该群的单位元。 用[a]n代表x%n=a.的所有满足条件的x所组成的集合,其中a为集合中最小非负整数,用最小的非负整数来代表整个集合,即[a]n={a+k*n,k∈Z)Zn={ [0]n, [1]n ,[2]n ,[3]n ,…, [n-1]n }在模原创 2017-05-29 14:00:03 · 1146 阅读 · 0 评论 -
矩阵快速幂
poj 3070 Fibonaccihttp://poj.org/problem?id=3070#include#includestruct matrix{ int v[3][3];}ans;matrix mul(matrix a,matrix b){ matrix temp; memset(temp.v,0,sizeof(temp.v)); for(int i=1;i原创 2017-07-03 16:55:41 · 213 阅读 · 0 评论 -
788A - Functions again 最大连续子序列和
题意:给一个公式,(1 ≤ l r ≤ n),(1=思路:令b[I] = | a[I]-a[I+1] | ,可以发现f(l,r)的最大值要么在 {b1,-b2,+b3,... ,(+ or -) bn-1},要么在{-b1,b2,-b3,b4,...,(- or +) bn-1 }中,两个序列中最大连续子序列和较大者为答案#include#include#include#defin原创 2017-05-23 09:38:31 · 312 阅读 · 0 评论 -
codeforces 810C Do you want a date? 数学 快速幂取模
题意:从一个含n个元素 的整数集中,取至少含有两个元素的子集,求所有子集a,,f(a)之和,输出结果为对1e9取模思路:http://blog.csdn.net/dragon60066/article/details/72599167#include#include#include#define ll long longusing namespace std;const int原创 2017-05-26 11:52:59 · 291 阅读 · 0 评论 -
hdu 4143 A Simple Problem
题意:给定一个n,问是否存在x使得y*y = n+x*x。思路:n=(y-x)*(y+x),枚举n的因数令I=y-x则n/I=y+x=>x=(I/n-i)/2,x为整数,且大于0#include#include#includeint main(){ int n,t; scanf("%d",&t); while(t--)//(y-x)(y+x) = n { /原创 2017-05-16 18:55:29 · 201 阅读 · 0 评论 -
codeforces 803C - Maximal GCD
题意:给定n和k,找到一个严格递增的序列,使得a1+a2+...+ak=n并且他们的最大公约数最大思路:令a1 = q*b1 ,a2 = q*b2 ... ak = q*bk 则q(b1+b2+..+bk)=n.所以q为n的约数,又由序列递增且都为正数可知n至少要等于1+2+...+k=(1+k)k/2 不满足条件则不能构成。然后枚举从大开始枚举n的约数q,只需使序列等于{1,2,3,4原创 2017-05-19 19:03:09 · 317 阅读 · 0 评论 -
poj 1006 生理周期 中国剩余定理
题意:人的身体素质,情绪状况,智力水平是在不断波动。时高时低。它们的周期分别是23,28,33天,顶峰会出现在周期中。给定p,e,i分别代表起三种水平从当年到达高峰的天数。对于每个周期,会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。你的任务是给定一个从当年第一天开始数的天数(d),输出从给定时间开始(不包括给定时间)下一次三个高峰落在同一天的时间(距给定时间的天数原创 2017-07-14 22:09:16 · 304 阅读 · 0 评论 -
hdu 3976 Electric resistance 高斯消元(浮点满秩模板)
题意:给定n个结点,编号为1~n。m个电阻连在不同结点间,求1~n的等效电阻。思路:根据基尔霍夫定律,流入或流出某一节点的所有之路的电流代数和为0。对每个节点列一个方程。未知量为各点的电势。假设流入1点的电流为1,那么流出n点的电流也为1.设1点电势为0,解出来的n点的电势即答案。http://acm.hdu.edu.cn/showproblem.php?pid=3976#includ原创 2017-07-10 14:41:11 · 319 阅读 · 0 评论 -
poj 2947 Widget Factory 高斯消元解模线性方程
http://poj.org/problem?id=2947思路:http://blog.csdn.net/u013486414/article/details/46999499http://blog.csdn.net/sr_19930829/article/details/38275863#include#include#includeusing namespace std原创 2017-07-09 20:12:00 · 288 阅读 · 0 评论 -
poj 2065 SETI 高斯消元解模线性方程
http://poj.org/problem?id=2065思路:http://blog.csdn.net/winddreams/article/details/47260465/*解模线性方程 */#include#include#includeusing namespace std;const int maxn = 100;int a[maxn][maxn];int原创 2017-07-09 21:52:10 · 252 阅读 · 0 评论 -
poj The Water Bowls 高斯消元枚举自由变元
题意:给定一个0 1 串。每次可以选择一个位置改变左右相邻位置及本身的状态,问全变为0,至少需要选几个。思路:枚举自由变元,取最小的#include#include#includeusing namespace std;const int maxn = 25;int a[maxn][maxn];int free_x[maxn];int x[maxn];int Gauss(i原创 2017-07-09 16:37:21 · 282 阅读 · 0 评论 -
poj 1830 开关问题
http://poj.org/problem?id=1830题意:n个状态会改变的灯。每个灯都有一些与之关联的灯,当某个灯状态变化时,与之相关联的灯状态也会改变。给出灯的初始状态和末状态。问能有几种方式到达末状态。思路:(x1,x2...xn)=>(y1,y2...yn) 每个灯的状态转化:.x1 xor a[0][0] * b1 xor a[0][1] *b2 xor ... xor a原创 2017-07-09 16:14:56 · 235 阅读 · 0 评论 -
poj 1753 Flip Game 高斯消元
http://poj.org/problem?id=1753题意:给定一个4*4的棋盘,每个点上都有一个棋子,棋子要么是白的,要么是黑的。每次可以选择翻转一个棋子,翻转后周围上下左右的四个棋子都被翻转,由白边黑,或黑变白。求最少翻转次数,使得最终棋子颜色统一。思路:同1222.但是有两个转换方向。全部白或全部黑。作两次高斯消元,每次可能存在无解和多解的情况。枚举自由变元,算出最小值。比较两原创 2017-07-09 15:07:36 · 207 阅读 · 0 评论 -
高斯消元
模板:http://www.cnblogs.com/kuangbin/archive/2012/09/01/2667044.htmlpoj 1222 EXTENDED LIGHTS OUT题意:有5行6列的灯。每次按一下某一个,那么范围内上下左右包括自己的状态都会改变,如果是亮的,就变灭,反之如果是灭的将被点亮。用1代表亮,用0表示灭。每个灯只能按一次,因为按两次又变回原状态。给定灯的初始原创 2017-07-08 20:43:07 · 208 阅读 · 0 评论 -
HDU1573X问题 解同余方程组问题
题意:问是否存在x属于(0,n]满足 x%ai=bi.ai,bi均为数组中的元素,长度为m。思路:又是一道两个不互质的解模线性方程思路与这道类似:http://blog.csdn.net/chen_minghui/article/details/75137215这道是加强版。要求给定范围内解的个数。上面的那道只需要求最小解。#includeusing namespace std;c原创 2017-07-15 13:48:58 · 268 阅读 · 0 评论 -
poj 2115 C Looooops 拓展欧几里德 解模线性方程模板
题意:求for (variable = A; variable != B; variable += C)的循环次数,其中变量为k比特无符号整数。思路: (a + c*x)% 2^k == b; cx === b-a (mod 2^k) ,求解模线性方程,x取最小正整数解#include#define ll long longusing namespace std;void ex原创 2017-05-28 17:45:06 · 332 阅读 · 0 评论 -
codeforce 804B - Minimum number of steps 快速幂+推断
题意:在一个只有a和b两种字符的字符串中,将ab边为bba,问知道不能变化为止最少变多少次思路:ab-》bba 数量上a没少,b多一个,且a移动到左边了。a每和一个b变换成bba,就相当于将a,b对调,并且右边多出一个b,变成bba后,原串中左端还有一个a,a就会和两个b配对,并多出两个b。所以可以计算b之前有多少个a,一个a:ab -> bba两个a:aab -> ab ba原创 2017-05-17 22:15:33 · 280 阅读 · 0 评论