Acm--数论
zzti_xiaowei
xxx
展开
-
全排列算法(递归法/字典序法)
全排列算法(递归法/字典序法)1、一般递归方法2、去重全排列的递归实现3、去重字典序的递归实现原创 2017-12-27 16:54:43 · 867 阅读 · 0 评论 -
Uva-11582Colossal Fibonacci Numbers!
一直WA了好多次,而且还没有搞懂没啥fib数列的循环节一定出现在最开始,然后找下一个0 1出现的位置,然后今天吧啦吧啦证明一下,感觉还阔以,然后一发AC!开心!代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace ...原创 2018-12-31 13:31:46 · 139 阅读 · 0 评论 -
Uva-10375 Choose and divide
题意:已知C(m,n)=m!/(n!(m-n)!),求C(p,q)/C(r,s)。(p≥q,r≥s,p,q,r,s≤10000)首先,求出10000以内的所有素数primes,然后用数组e表示当时结果的唯一分解式中的各个素数的指数。例如,e={1,0,2,0,0,0…)表示21*52=50。 (虽然紫书上有详解了,但是讲的真是太帅了!抄一下膜拜之!)#include<iostream&g...原创 2019-01-01 13:14:00 · 111 阅读 · 0 评论 -
Uva-791 Minimum Sum LCM
紫书题解:设唯一分解式:n=a1p1*a2p2…,不难发现每个aipi 作为一个单独的整数时最优。注意点:1.n=1时 &nbsp;2.n本身为质数时 &nbsp;3.n只有一个因子时 &nbsp;4.n有两个因子以上时。&lt;自己思路不够清晰,太急于求成,写了很久,一直WA!&gt;&lt;**Think twice,Code once!!!**&gt;#include&原创 2019-01-01 21:55:19 · 127 阅读 · 0 评论 -
Light oj-1306 Solutions to an Equation
[经典题目]:给出方程ax+by+c=0,求出有多少对整数解(x, y),满足x1≤x≤x2,y1≤y≤y2。[思路]:首先,对方程ax+by+c=0,讨论其特例。[1] 如果a=0,b=0,并且c≠0,则无解。如果a=0,b=0,并且c=0,则整数根的数目为((x2- x1+1)*( y2- y1+1))。[2] 如果a=0并且b≠0,则by=c。如果c 不是b的倍数,或c/b不是[y...原创 2019-02-01 12:54:57 · 212 阅读 · 0 评论 -
Poj-2115 C Looooops
[题解]:拓展欧几里得求解一元线性同一方程模板题,刚开始学,比着解析求出了方程的一组解,想着要怎么求出最小非负整数解呐?实在是想不出来,各种博客看看,对一元线性同余方程有了进一步的认识。感谢konjac蒟蒻大佬写的博客~#include&amp;lt;iostream&amp;gt;#include&amp;lt;cstdio&amp;gt;#include&amp;lt;cstring&am原创 2019-02-02 23:16:00 · 168 阅读 · 0 评论 -
Zoj-3609 Modular Inverse
[思路]拓展欧几里得求模逆元模板题,注意求的是最小非负整数,结果为0时,要加上m。方程a*x≡1(mod m)的通解为:x=x0+k*m 每个解都是模m同余的,先求到一个特解,一顿操作(x%m+m)%m即可即可求到最小值。#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&原创 2019-02-03 11:42:46 · 126 阅读 · 0 评论 -
Poj-2480 Longge's problem
[思路]: 题目给出整数n,对从111到nnn的每个数iii,要求计算gcd(i,n)gcd(i,n)gcd(i,n)的和。首先,在从111到nnn的每个数中,所有与nnn互素的数xxx的个数nnn的欧拉φφφ函数φ(n)φ(n)φ(n)。如果gcd(i,n)=p(1&lt;p≤n)gcd(i,n)=p(1&lt;p≤n)gcd(i,n)=p(1<p≤n),则i/p和n/p...原创 2019-02-10 16:57:39 · 186 阅读 · 0 评论 -
Poj-2773 Happy 2006
[思路]:gcd(b*t+a,b)= gcd(a,b)(t为任意整数)如果a与b互素,则b*t+a与b也一定互素,如果a与b不互素,则b*t+a与b也一定不互素。故与m互素的数对m取模具有周期性,则根据这个方法我们就可以很快的求出第k个与m互素的数。假设小于m的数且与m互素的数有k个,其中第i个是ai,则第m*k+i与m互素的数是k*m+ai。#include<iostream>...原创 2019-01-31 10:52:39 · 188 阅读 · 0 评论 -
母函数详解和史上最通用最高效的母函数模板【转】
版权所有。所有权利保留。欢迎转载,转载时请注明出处:http://blog.csdn.net/xiaofei_it/article/details/17042651母函数,又称生成函数,是ACM竞赛中经常使用的一种解题算法,常用来解决组合方面的题目。本文讲解母函数,但不讲解该算法的基础理论。读者随便找一本组合数学教材便可找到相应的内容,或者直接在网上搜索一下。母函数通常解...转载 2019-03-05 13:52:55 · 137 阅读 · 0 评论 -
Ural-1091 Tmutarakan Exams
题解: 容斥原理经典题目,mark一下~#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;typedef long long ll;int k,s;int p...原创 2019-03-03 12:26:17 · 245 阅读 · 0 评论 -
Poj-2356 Find a multiple
题解: 鸽笼原理经典题目,mark一下~#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int Max_n=1e5+10;int n;int a[Max_n],sum[Max_n];in...原创 2019-03-03 12:33:30 · 179 阅读 · 0 评论 -
Nyoj 取石子游戏(博弈专题)
23-取石子(一)#include&amp;amp;amp;lt;iostream&amp;amp;amp;gt;#include&amp;amp;amp;lt;cstdio&amp;amp;amp;gt;#include&amp;amp;amp;lt;cstring&amp;amp;amp;gt;#include&amp;amp;amp;lt;algorithm&原创 2018-12-10 21:36:32 · 317 阅读 · 0 评论 -
Uva-11859 Division Game
题解详见刘汝佳--训练指南P136写的超级详细了,在此贴个预处理代码。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int Max_n=1e4+10;int T,n,m;int cnt[M...原创 2018-12-07 12:58:55 · 178 阅读 · 0 评论 -
快速幂取模算法
废话不多说, 直接步入正题。现在oj网站的题或者竞赛的题,如果a的b次幂且b很大,那么题中大多会让你把结果对一个数取余也就是求模,例如a^b%c这种,当然如果是考高精度的题除外。接下来我将提供一种常规算法和两种竞赛中主流的快幂算法。首先我们设题目要求为a^b mod c常规算法这里我就不多作解释,直接码代码了[cpp] view plain copyint mod(int a, int b, in...转载 2018-01-02 12:00:39 · 269 阅读 · 0 评论 -
证明欧几里德(辗转相除法)算法
---《百科》证明的很好,直接Copy过来了、原创 2018-02-07 09:55:57 · 408 阅读 · 0 评论 -
证明拓展欧几里德算法
拓展欧几里德定律: 对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然 存在整数对 x,y ,使得 gcd(a,b)=ax+by。证明:设 a>b。1,显然当 b=0,gcd(a,b)=a。此时 x=1,y=0;2,a>b>0 时设 ax1+ by1= gcd(a,b); bx2+ (a mod b)y2= gcd(b,a mod...原创 2018-02-10 14:29:23 · 233 阅读 · 0 评论 -
埃氏筛法、区间筛法(求素数个数)
1、埃氏筛法 给定整数n,请问n以内有多少个素数?(n≤106)思路:首先,将2到n范围内的所有整数写下来。其中最小的数字2是素数。将表中所有2的倍数都划去。表中剩余最小的数字是3,它不能被更小的素数整除,所以是素数。再将表中3的倍数都划去。以此类推,如果表中最小的数字是m时, m 就是素数。像这样反复操作,就能以此枚举n以内的素数。int pri[Max_n]; //第i个素数b...原创 2018-02-15 12:05:52 · 1781 阅读 · 2 评论 -
Nowcoder-又见斐波那契
[题目链接] 思路: 构建一个6*6的转移矩阵,然后矩阵快速幂进行求解。 代码: #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long ll;const in...原创 2018-04-28 09:56:16 · 189 阅读 · 0 评论 -
poj-2718 Smallest Difference
[题目链接]思路: STL封装好的全排列函数next_permutation()就是快啊,无奈自己写的全排列各种TLE~代码:#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<queue>#include<...原创 2018-05-22 11:17:15 · 106 阅读 · 0 评论 -
51nod-1069 Nim游戏
Nim游戏证明参见:刘汝佳训练指南P135—写的很酷!知乎上SimonS关于Nim博弈的回答!#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int Max_n=1100;int n;i...原创 2018-12-04 10:51:20 · 190 阅读 · 0 评论 -
LA-5059 Playing With Stones
小笨蛋加油,努力努力再努力,一步一步又一步,略~~李汝佳训练指南P137很不错的SG打表找规律,可惜太笨了,没有找到。当n为偶数,SG(n)=n/2;当n为奇数,SG(n)=SG(n/2),有意思!#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>...原创 2018-12-08 00:08:51 · 110 阅读 · 0 评论 -
博弈入门(Bash/Wythoff/Nim)
1.Bash(巴什博弈)有一堆石子共有n个。AB两个人轮流拿,A先拿。每次最少拿1颗,最多拿m颗,最后取完者获胜。取胜策略:拿掉部分物品,使对方面临看k(m+1)的局面。void solve(int n,int m){ //n%(m+1)!=0则先手赢,反之后手赢 printf("%c\n",n%(m+1)?'A':'B');}2.Wythoff(威佐夫博弈)有2堆石...原创 2018-12-05 22:25:22 · 166 阅读 · 0 评论 -
1185-威佐夫游戏 V2
经典博弈题,比V1数据范围大了很多,像V1一样单纯改变n的数据类型,运算时会因为误失精度而WA掉。通过乘法模拟精度得到解决(很不错的思路,模拟很优雅~)。参见博客#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm&g...原创 2018-12-13 17:34:30 · 165 阅读 · 0 评论 -
51nod-Bash游戏 V1V2V3V4
1066 Bash游戏//自己小数据手推一下,可以找到规律的。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int t,n,m;void solve(int n,int m){ printf...原创 2018-12-13 18:50:14 · 235 阅读 · 0 评论 -
Hdu-3483 A Very Simple Problem
不是很会构造矩阵,耗费了十几页的A4纸!!!构造矩阵:坑点:S(n)=k构造矩阵要取模(不只是在运算过程中取模,平时构造的矩阵不取模是因为模数一般为1e9+7,只用运算过程中才会超过模数。)代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm...原创 2019-03-19 14:06:22 · 171 阅读 · 0 评论