--------------数论--------------
yphacker
心之所动,且就随缘去吧
展开
-
2013年山东省第四届ACM大学生程序设计竞赛——A^X mod P
题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2605A^X mod P打表求解,不然会超时!!!http://blog.csdn.net/i_am_a_winer/article/details/44905701他说相当于dp,但我感觉其实就是一道数论题,用快原创 2015-05-06 09:22:49 · 653 阅读 · 0 评论 -
hihoCoder 1298 欧拉函数
欧拉函数描述小Hi和小Ho有时候会用密码写信来互相联系,他们用了一个很大的数当做密钥。小Hi和小Ho约定了一个区间[L,R],每次小Hi和小Ho会选择其中的一个数作为密钥。小Hi:小Ho,这次我们选[L,R]中的一个数K。小Ho:恩,小Hi,这个K是多少啊?小Hi:这个K嘛,不如这一次小Ho你自己想办法算一算怎么样?我这次选择的K满足这样一个条件原创 2016-05-23 00:06:16 · 386 阅读 · 0 评论 -
hihoCoder 1303 模线性方程组
模线性方程组描述:给定了n组除数m[i]和余数r[i],通过这n组(m[i],r[i])求解一个x,使得x mod m[i] = r[i]。算法思想:一开始就直接求解多个方程不是太容易,我们从n=2开始递推:已知:x mod m[1] = r[1]x mod m[2] = r[2]根据这两个式子,我们存在两个整数k[1],k[2]:x = m[原创 2016-05-31 21:01:02 · 562 阅读 · 0 评论 -
hdu 5392 Infoplane in Tina Town(快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5392解题思路:官方题解:给出一个置换,求它的循环长度。数据范围 3\times 10^63×106。其实没有什么好说的,就分解成循环求长度的最小公倍数就好了。对于这个模数要用unsigned int存,这个最小公倍数的求法不能用欧几里得,直接每次分解质因数原创 2015-08-16 10:24:44 · 920 阅读 · 3 评论 -
hdu 5288 OO’s Sequence(two pointers)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5288解题思路:官方题解:定义两个数组L[i],R[i],表示第i个左侧和右侧最接近它且值是a[i]因子的数字的位置,那么第i个数能贡献的答案就是(R[i]-i)*(i-L[i]),因此每个数字x都去枚举它的因子y,然后左右找到一个值y且最接近x的数,然后用他的位置更新一下L,R数组原创 2015-08-13 21:22:51 · 524 阅读 · 0 评论 -
POJ 2456 Aggressive cows(二分)
题目链接:http://poj.org/problem?id=2456解题思路:对牛舍的位置x进行排序把第一头牛放入x0的牛舍如果把i头牛放入了xj的话,第i+1头牛就要放入满足xj+dAC代码:#include #include #include #define INF 0xfffffffusing namespace std;int n,m;i原创 2015-08-12 23:01:15 · 509 阅读 · 0 评论 -
POJ 1064 Cable master(二分)
题目链接:http://poj.org/problem?id=1064解题思路:用二分查找判断一个解是否可行。。。AC代码:#include #include #include #define eps 1e-9#define INF 100005using namespace std;int n,k;double a[10005];bool check(原创 2015-08-12 22:37:00 · 427 阅读 · 0 评论 -
UVA 10006 Carmichael Numbers(快速幂)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=12&page=show_problem&problem=947解题思路:输入n,若满足如下两个条件,则n是Carmichael number (1)n不是素数 (2)对于所有a(2 先判断是否为素数原创 2015-08-12 21:01:08 · 481 阅读 · 0 评论 -
Catalan数计算及其应用
卡塔兰数卡塔兰数是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。卡塔兰数的一般项公式为 其他递归式为: h(n)=((4*n-2)/(n+1))*h(n-1);前几项为 (OEIS中的数列A000108): 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 1679原创 2016-05-22 13:52:47 · 682 阅读 · 1 评论 -
hdu 1133 Buy the Ticket(卡特兰数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1133解题思路:首先假设人无区别令f(m,n)表示有m个人手持¥50的钞票,n个人手持¥100的钞票时共有的方案总数。则可以分以下情况讨论这个问题:(1)当n=0时 N=0意味着排队购票的所有人手中拿的都是 ¥50的钞票,那么这m个人排队方案总数为1。(2)当m原创 2015-08-10 21:43:39 · 781 阅读 · 0 评论 -
hdu 1171 Big Event in HDU(母函数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1171解题思路:由母函数可知,数组c1[i]代表i一共有多少种组合,所以c1[i]为0,代表该数没有可行解,从总数的一半开始,往下面找,直到找到一个不为0的i,即为所求。。。AC代码:#include #include #include #include using na原创 2015-08-07 23:59:22 · 318 阅读 · 0 评论 -
hdu 1398 Square Coins(母函数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1398解题思路:母函数。。。AC代码:#include #include #include using namespace std;int c1[305],c2[305];int main(){ int a[18]; for(int i = 1; i原创 2015-08-07 23:14:23 · 360 阅读 · 0 评论 -
hdu 1205 吃糖果(鸽巢原理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1205解题思路:鸽巢原理1.把某种糖果看做隔板,如果某种糖果有n个,那么就有n+1块区域,至少需要n-1块其他种糖果才能使得所有隔板不挨在一块..也就是说能吃完这种糖果.至少需要其他种类糖果n-1块..(鸽巢原理)2.数量最多的糖果(隔板)可以构造最多的空间,如果这种糖果原创 2015-08-07 22:53:05 · 435 阅读 · 0 评论 -
hdu 1061 Rightmost Digit(快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1061解题思路:快速幂。。。AC代码:#include #include using namespace std;int main(){ int T; scanf("%d",&T); while(T--){ int n;原创 2015-08-07 22:16:11 · 495 阅读 · 0 评论 -
hdu 3199 Hamming Problem
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3199解题思路:虽然数很大,但是并没有超过long long 的最大数,所以还是直接按照丑数的求法来就行了。。。AC代码:#include #include #include #include using namespace std;typedef long long原创 2015-08-07 22:01:52 · 511 阅读 · 0 评论 -
hdu 1058 Humble Number
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058解题思路:orz英语序数。。。first 第一 second 第二 third 第三 fourth 第四 fifth 第五 sixth 第六 seventh 第七 eighth 第八 ninth 第九 tenth 第十 eleventh 第十原创 2015-08-07 21:39:22 · 441 阅读 · 0 评论 -
hihoCoder 1141 二分·归并排序之逆序对
题目链接:http://hihocoder.com/problemset/problem/1141官方题解:我们来看一个归并排序的过程:给定的数组为[2, 4, 5, 3, 1],二分后的数组分别为[2, 4, 5], [1, 3],假设我们已经完成了子过程,现在进行到该数组的“并”操作:a: [2, 4, 5]b: [1, 3]原创 2015-08-07 19:52:45 · 532 阅读 · 0 评论 -
hihoCoder 1287 Miller-Rabin质数测试
Miller-Rabin质数测试摘自hihoCoder:这种质数算法是基于费马小定理的一个扩展,首先我们要知道什么是费马小定理:费马小定理:对于质数p和任意整数a,有a^p ≡ a(mod p)(同余)。反之,若满足a^p ≡ a(mod p),p也有很大概率为质数。将两边同时约去一个a,则有a^(p-1) ≡ 1(mod p)也即是说:假设我们要测试n是否为质数。原创 2016-05-22 21:36:26 · 772 阅读 · 0 评论 -
LightOj 1220 Fantasy of a Summation(快速幂)
Fantasy of a SummationDescriptionIf you think codes, eat codes then sometimes you may get stressed. In your dreams you may see huge codes, as I have seen once. Here is the code I saw in my d原创 2016-04-05 21:37:04 · 721 阅读 · 0 评论 -
LightOJ 1236 Pairs Forming LCM(唯一分解定理)
Pairs Forming LCM解题思路:给你一个数n 求满足lcm(a, b) == n, a 容易知道 n 是a, b的所有素因子取在a, b中较大指数的积先将n分解为素数指数积的形式 n=p1^e1*p2^e2*...*pk^ek; a=p1^a1*p2^a2*…*pk^ak b=p1^b1*p2^b2*…*pk^bk对于a,b它们的最小公倍数为n,则a1原创 2016-02-25 21:55:14 · 484 阅读 · 0 评论 -
HDU1085 Holding Bin-Laden Captive!(母函数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1085解题思路:一道母函数的题目,至于有关母函数详细的讲解,请看这个人的博客:http://www.wutianqi.com/?p=596至于我对母函数的理解吧,个人认为其实还是很简单的,代码里有备注。AC代码:#include#include#include原创 2014-12-04 09:18:04 · 359 阅读 · 0 评论 -
HDU5229 ZCC loves strings
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5229ZCC loves strings解题思路:结论:对于串a和b,游戏中先手必胜当且仅当|a|+|b|为奇数或a=b.我们按|a|+|b|的大小从小到大考虑所有的情况。当|a|+|b|=0时,显然先手必败,符合结论。假设已经证明了|a|+|b|=k(kp)的所有原创 2015-05-27 20:41:44 · 420 阅读 · 0 评论 -
hdu 5411 CRB and Puzzle(矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5411解题思路:题目大意:给定n个点 常数m下面n行第i行第一个数字表示i点的出边数,后面给出这些出边。问:图里存在多少条路径使得路径长度官方题解:We can count the number of different patterns by count原创 2015-08-25 21:11:02 · 695 阅读 · 0 评论 -
hdu 5396 Expression(区间dp+组合数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5396解题思路:题目大意:题目大意:有n个数,和n-1个符号('+','-','*')形成一个表达式,现在问对于不同的运算序列,得到的结果的总和是多少(结果为非负整数,对1e9+7取余)dp[i][j]记录在区间l到r内的各种不同的运算序列的结果的和。官方题解:原创 2015-08-26 18:43:02 · 580 阅读 · 0 评论 -
约数定理(约数个数定理,约束和定理)
约数个数定理:对于一个大于1正整数n可以分解质因数:则n的正约数的个数就是。其中a1、a2、a3…ak是p1、p2、p3,…pk的指数。定理简证:首先同上,n可以分解质因数:n=p1^a1×p2^a2×p3^a3*…*pk^ak,由约数定义可知p1^a1的约数有:p1^0, p1^1, p1^2......p1^a1原创 2015-08-24 18:53:01 · 19002 阅读 · 1 评论 -
POJ 2992 Divisors(约数定理)
题目链接:http://poj.org/problem?id=2992解题思路:求C(n,k)的因子个数。。。将1!~431!的每个素因子的个数打表,而C(n,k)=n!/(k!*(n-k)!),所以再利用求因子个数的公式即可http://blog.csdn.net/piaocoder/article/details/47954385AC代码:#include原创 2015-08-24 19:06:09 · 593 阅读 · 0 评论 -
hdu 5399 Too Simple
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5399解题思路:题目大意:给m个函数,其对应是自变量x属于{1,2,...n},f(x)属于{1,2...n},给出其中一些函数,问有多少种不同的函数集合,使得1首先要求每个fif_ifi是个排列,否则如果某个fif_ifi将两个数映射向同一个数,那么最后原创 2015-08-19 23:54:22 · 438 阅读 · 0 评论 -
hdu 5407 CRB and Candies(素数筛选法,除法取模(乘法逆元))
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5407解题思路:官方题解:The problem is just to calculate g(N)\ =\ LCM(C(N,0), C(N,1), ..., C(N, N))g(N) = LCM(C(N,0),C(N,1),...,C(N,N)).Introdu原创 2015-08-25 22:40:39 · 868 阅读 · 0 评论 -
hdu 5400 Arithmetic Sequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5400解题思路:首先预处理出来出iii这个位置向前d1d_1d1的等差序列和向后d2d_2d2的等差数列能延续到多长,记作li,ril_i,r_ili,ri。如果d1≠d2d_1\neq d_2d1≠d2,那么枚举中间位置,答案为li∗ril_原创 2015-08-20 00:02:36 · 442 阅读 · 0 评论 -
hdu 5312 Sequence
这个题看上去是一个贪心, 但是这个贪心显然是错的. 事实上这道题目很简单, 先判断1个是否可以, 然后判断2个是否可以. 之后找到最小的k (k > 2)k(k>2), 使得(m - k) mod 6 = 0(m−k)mod6=0即可.证明如下: 3n(n-1)+1 = 6(n*(n-1)/2)+13n(n−1)+1=6(n∗(n−1)/2)+1, 注意到n*(n-1)原创 2015-08-02 23:13:59 · 328 阅读 · 0 评论 -
hdu 5001 Walk(概率dp+搜索,矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5001解题思路:题目大意:给你一张无向的连通图,一共有n个点,m条边,随机从任意一点开始走,在任意一个点走向相连的点的概率都是相同的,一共走d步,分别求出每个点不在这个路径中的概率。算法思想:1.枚举每个要经过的点,然后进行状态转移,状态为dp[i][j],状态表示当前在j的原创 2015-09-07 22:38:56 · 398 阅读 · 1 评论 -
UVA 10820 Send a Table
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1761解题思路:筛选法求欧拉函数题意:输入n,[1,50000],定义一个二元组(x,y),满足1关键是怎么找出这个二元组,其实就是筛选法求欧拉函数我们约定x所原创 2015-08-19 21:37:28 · 545 阅读 · 0 评论 -
hdu 5430 Reflect(欧拉函数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5430解题思路:官方题解:AC代码:#include #include #include using namespace std;typedef long long ll;const int maxn = 1000005;ll phi[maxn],n原创 2015-09-06 18:51:50 · 488 阅读 · 0 评论 -
HDU1028 Ignatius and the Princess III(母函数模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1028解题思路:标准的母函数模板题。AC代码:#include#includeusing namespace std;int main(){ int n; while(scanf("%d",&n)!=EOF) { int i原创 2014-12-08 08:01:31 · 739 阅读 · 3 评论 -
hdu 1850 Being a Good Boy in Spring Festival(Nim博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1850解题思路:题目大意:给你几堆扑克,让你判断如果你能赢,你第一次操作都能使对手败的操作次数有多少种。算法思想:根据题目大致可以根据其特点,得到如下思路;因为你每次能从任意选择一堆并取走其中的任意张牌。那么,只要看每一堆中有多少种操作;只要每一次中改变的不使之得到如下结原创 2015-09-15 19:52:35 · 498 阅读 · 0 评论 -
hdu 5446 Unknown Treasure(lucas定理+中国剩余定理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5446解题思路:首先对于每个质数pi我们,我们可以利用Lucas定理求出Cmn%pi的值,Lucas定理如下:Cmn%p=Cm/pn/p⋅Cm%pn%p%p然后我们可以利用中国剩余定理求取最后答案:M=∏i=1kpi,Mi=M/piCmn%M=∑i原创 2015-09-14 21:00:17 · 917 阅读 · 0 评论 -
hdu 3037 Saving Beans(lucas定理)(卢卡斯定理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3037解题思路:题目可以转换成 x1+x2+……+xn=m 有多少组解,m在题中可以取0~m。利用插板法可以得出x1+x2+……+xn=m解的个数为C(n+m-1,m);则题目解的个数可以转换成求 sum=C(n+m-1,0)+C(n+m-1,1)+C(n+m-1,原创 2015-09-14 20:32:40 · 1283 阅读 · 1 评论 -
HDU1709 The Balance(母函数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1709解题思路:有了上次对母函数的理解,这道题应该不难吧。AC代码:#include#include#includeusing namespace std;int main(){ int n; while(scanf("%d",&n)!=EOF) {原创 2014-12-04 09:29:34 · 371 阅读 · 0 评论 -
hihoCoder 1296 约瑟夫问题
约瑟夫问题摘自hihoCoder:最直观的解法是用循环链表模拟报数、淘汰的过程,复杂度是O(NM)。今天我们来学习两种更高效的算法,一种是递推,另一种也是递推。第一种递推的公式为:令f[n]表示当有n个候选人时,最后当选者的编号。f[1] = 0f[n] = (f[n - 1] + K) mod n 接下来我们用数学归纳法来证明这个递推公式的正确性:原创 2016-05-22 23:24:10 · 429 阅读 · 0 评论