
数学-典型问题
文章平均质量分 51
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
uva 440 Eeny Meeny Moo(约瑟夫环)
Eeny Meeny Moo Surely you have made the experience that when too many people use the Internet simultaneously, the net becomes very, very slow.To put an end to this problem, the原创 2013-08-01 00:02:19 · 1841 阅读 · 0 评论 -
uva 10831 - Gerg's Cake(勒让德记号)
题目链接:uva 10831 - Gerg's Cake题目大意:给定a和p,p为素数,问说是否存在x,使得x2≡a%p解题思路:勒让德记号,判断ap−12≡1%p#include #include #include using namespace std;typedef long long ll;ll pow_mod (ll a, ll n, ll mod)原创 2014-07-06 09:09:30 · 1405 阅读 · 0 评论 -
uva 10548 - Find the Right Changes(拓展欧几里得)
题目链接:uva 10548 - Find the Right Changes题目大意:给定A,B,C,求x,y,使得xA+yB=C,求有多少种解。解题思路:拓展欧几里得,保证x,y均大于等于0,确定通解中t的取值。#include #include #include #include using namespace std;typedef long long ll原创 2014-07-10 11:06:34 · 1228 阅读 · 0 评论 -
uva 11440 - Help Tomisu(欧拉函数)
题目链接:uva 11440 - Help Tomisu题目大意:给定n和m,求从2~n!中的数x,要求x的质因子均大于m,问说x有多少个,答案模上1e9+7。解题思路:(1)n!=k∗m!(n≥m)(2) 如果有gcd(x,T)=1,那么gcd(x+T,T)=gcd(x,T)=1题目要求说x的质因子必须要大于m,也就是说x不能包含2~m的因原创 2014-07-10 12:30:38 · 1362 阅读 · 0 评论 -
uva 11237 - Halloween treats(抽屉原理)
题目链接:uva 11237 - Halloween treats题目大意:有c个小孩要到邻居家去要糖果,有n户邻居,每户邻居只会提供固定数量的糖果,熊孩子们为了不发生冲突,决定将取来的糖果平均分配,问说取那几家邻居的糖果可以做到平均分配,注意n ≥ c。解题思路:抽屉原理,求出序列的前缀和,有n个,将前缀和对c取模后,根据剩余系定理肯定是在0~c-1之间的,如果是0那么答案就原创 2014-07-09 22:17:34 · 1729 阅读 · 0 评论 -
hdu 4910 Problem about GCD(数论)
题目连接:hdu 4910 Problem about GCD题目大意:给定M,判断所有小于M并且和M互质的数的积取模M的值。解题思路:有个数论的结论,若为偶数,M=M/2. 可以写成M=pk,即只有一种质因子时,答案为M-1,否则为1.特殊情况为4的倍数,不包括4.首先用1e6以内的素数去试除,如果都不可以为p,那么对大于1e6的情况判断一下是否为素数,是素数也可以(k=1)原创 2014-08-04 00:46:18 · 1958 阅读 · 4 评论 -
uva 10837 - A Research Problem(欧拉函数+暴力)
题目链接:uva 10837 - A Research Problem题目大意:给定一个phin,要求一个最小的n,欧拉函数n等于phin解题思路:欧拉函数性质有,p为素数的话有phip=p−1;如果p和q互质的话有phip∗q=phip∗phiq然后根据这样的性质,n=pk11(p1−1)∗pk22(p2−1)∗⋯∗pkii(pi−1),将所有的pi处理出来,暴力搜索维护最小原创 2014-07-10 10:59:05 · 1692 阅读 · 0 评论 -
uva 10413 - Crazy Savages(拓展欧几里得)
题目链接:uva 10413 - Crazy Savages题目大意:一座山有m个山洞,形成一个圈,现在有n个部落的人,每个部落一开始住在ci山洞,第2天会向后面移动pi个位置,一共会在这座山住li天。现在如果两个部落在同一个山洞相遇,则会发生战争,问说m最小时多少的时候,保证不会发生争斗。解题思路:因为每个部落都有自己的存在时间,所以枚举m,然后枚举两个部落,判断他们有没有可能相原创 2014-07-09 22:29:40 · 1196 阅读 · 0 评论 -
uva 11317 - GCD+LCM(欧拉函数+log)
题目链接:uva 11317 - GCD+LCM题目大意:给定n,求出1~n里面两两的最大公约的积GCD和最小公倍数的积LCM,在10100进制下的位数。解题思路:在n的情况下,对于最大公约数为i的情况又phi[n/i]次。求LCM就用两两乘积除以GCD即可。#include #include #include #include using namespace std原创 2014-08-03 00:02:35 · 1638 阅读 · 2 评论 -
uva 10791 - Minimum Sum LCM(分解因子)
题目大意:uva 10791 - Minimum Sum LCM题目大意:给出一个n,将n分解成n = p1 ^ k1 * p2 ^ k2 * ... * pm ^ km,然后求解sum = ∑(1≤i≤m)pi ^ ki.解题思路:比较费解的是n本身就是素数,那么n应该分解成n^ 1 + 1 ^ 1,所以sum= n + 1,还有一种就是n = p ^ k,sum = p原创 2013-10-24 08:41:54 · 2040 阅读 · 0 评论 -
uva 1546 - Complete the sequence!(牛顿插值法)
题目连接:uva 1546 - Complete the sequence!题目大意:给出一个序列的n项,求满足序列规律的后c项,要求尽量小。解题思路:牛顿插值法,每次求两项之间的差,形成一个新的序列,直到序列公差为0时,回带回原来的序列即可。#include #include #include using namespace std;const int maxn =原创 2014-08-18 00:11:31 · 1239 阅读 · 0 评论 -
uva 10951 - Polynomial GCD(欧几里得)
题目链接:uva 10951 - Polynomial GCD题目大意:给出n和两个多项式,求两个多项式在所有操作均模n的情况下最大公约数是多少。解题思路:欧几里得算法,就是为多项式这个数据类型重载取模运算符,需要注意的是在多项式除多项的过程中,为了保证各项系数为整数,需要将整个多项式的系数整体扩大至一定倍数,碰到先除后模的时候要用逆元。#include #include原创 2014-07-03 19:32:19 · 1480 阅读 · 1 评论 -
uva 10090 - Marbles(欧几里得+通解)
题目链接:uva 10090 - Marbles题目大意:给出n,表示有n个珠子,现在要用若干个盒子来装。有两种盒子,一种价钱c1,可以装t1个珠子,另一种价钱c2,可以装t2个珠子。要求所卖的盒子刚好装n个珠子,并且价钱最小的方案。解题思路:用拓展欧几里得算法求出xt1+yt2=n的一对解x′和y′,这样就有通解:x=x′ngcd(t1,t2)+t2gcd(t1,t2)k原创 2014-07-02 13:33:18 · 1377 阅读 · 0 评论 -
uva 305 Joseph(约瑟夫环解+打表)
Joseph The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, ..., n, standing in circle every mth is原创 2013-08-01 00:05:35 · 1942 阅读 · 0 评论 -
uva 10717 - Mint(欧几里得求最小公倍数)
题目链接:uva 10717 - Mint题目大意:给出n和m,然后给出n种硬币的的厚度,现在在给出m个桌子的高度,要求对应每个桌子high,输出两个值,从n种硬币中选取4种,每一种硬币用若干个叠在一起,使得四个柱一样吧高h,先在要找出一个h小于等于high,一个h大于等于high,两个值都要尽量接近high。解题思路:枚举四种硬币,求出它们的最小公倍数。#原创 2013-10-24 09:42:35 · 1350 阅读 · 0 评论 -
uva 10105 - Polynomial Coefficients(多项式系数)
题目连接:uva 10105 - Polynomial Coefficients题目大意:给出n和m,再该出m个数值n1 ~ nm, 保证n1 + ... + nm = n,现在有算式(a1 + a2 + ... + am) ^ n, 求展开项中a1^n1 + a2^n2 +...+ am^nm这项的系数。解题思路:(a + b)^n的系数为C(i, n), 那么对于算式(原创 2013-10-27 16:12:30 · 2139 阅读 · 0 评论 -
uva 11121 - Base -2(负进制转换)
题目连接:uva 11121 - Base -2题目大意:给出一个十进制的数,将这个数转换成-2进制的数。解题思路:进制转化是一种很简单的题型,可是对于负数的进制来说我就很陌生了,研究了蛮久的,这里分享一下。首先要了解如何将一个-2进制的数转换成十进制数,历7对应的-2进制数即为11011;1 * (-2) ^ 4 + 1 * (-2) ^ 3 + 0 *原创 2013-10-22 23:37:15 · 1615 阅读 · 2 评论 -
hdu 3910 Liang Guo Sha
题目链接:hdu 3910 Liang Guo Sha题目大意:Alice和Bob这两个小伙伴又发明了一种新游戏, 叫两国杀, 每个人手上有两张牌,“杀” 和“闪”, 然后有三个数值A,B和C, 当两个人都出“杀”的话,Alice加A分,Bob减A分;当两人都出“闪”的话,Alice 加B分,Bob减B分;否则Bob加C分,Alice减C分,问说Alice的分的期望值(不受Bob出牌的原创 2013-11-01 17:38:04 · 1376 阅读 · 0 评论 -
uva 1394 - And Then There Was One(约瑟夫环)
题目链接:uva 1394 - And Then There Was One题目大意:给出n,k和m,表示有n个人围成一个圈,从第m个人开始(m也要去掉),每次走k步删除掉,问最后剩下人的序号。解题思路:约瑟夫环的小变形,套公式dp[i] = (dp[i-1] + k)%i。#include int main () { int n, k, m; whil原创 2014-02-17 17:06:10 · 1413 阅读 · 0 评论 -
uva 1452 - Jump(约瑟夫环)
题目链接:uva 1452 - Jump题目大意:给出n和k,就是正常的约瑟夫环问题,但是要求给出最后剩下的三个人。解题思路:ans = (ans+k)%i是逆推从最后一个剩的人反推回一开始这个人的序号,那么当i == 2是,另外一个就是剩下第2个人,当i== 3是,抛开先前两个,就是剩下的第三个人,将它们的序号以同样的方式反推回去即可。原创 2014-02-20 16:27:45 · 1796 阅读 · 0 评论 -
uva 10726 - Coco Monkey(数论)
题目链接:uva 10726 - Coco Monkey题目大意:n个人,m只猴子,l和r,表示上下限。找出l~r之间有几个数满足题目要求。s即为由满足要求的数,在题目中表示有s个椰子,n个人说好第二天将椰子平分,但是午夜的时候,一个人偷偷爬起来,将椰子分成n份,并且剩了m个,就将m个拿给了猴子,并且自己藏起来一份;紧接着第2个人,第3个人都按照相同的方法一直到最后一个人;然后第二原创 2014-04-29 17:13:53 · 1767 阅读 · 0 评论 -
uva 11174 - Stand in a Line(逆元+递推)
题目连接:uva 11174 - Stand in a Line题目大意:村子里有n个村名民,现在他们要排成一列,处于对长辈的尊敬,他们不能排在自己父亲的前面,有些人的父亲不一定在村子了。问有多少种列的顺序。解题思路:【算法竞赛入门经典-训练指南】的例题,主要还用到了欧几里得拓展定理求逆元。#include #include #include using namespa原创 2014-05-18 13:23:45 · 2150 阅读 · 0 评论 -
uva 11426 - GCD - Extreme (II)(数论)
题目链接:uva 11426 - GCD - Extreme题目大意:给出n,求∑i!=jngcd(i,j)解题思路:f(n)=gcd(1,n)+gcd(2,n)+⋯+gcd(n−1,n)S(n)=f(2)+f(3)+⋯+f(n)S(n)=S(n−1)+f(n)问题转化成怎么求f(n),对于一个n来说,枚举因子乘上个数即可。#include #include原创 2014-07-01 20:37:10 · 1670 阅读 · 0 评论 -
Codeforces 492E Vanya and Field(拓展欧几里得)
题目链接:Codeforces 492E Vanya and Field通过拓展欧几里得算法求出每个位置在移动过程中,在x为0时,y的位置。统计相应y坐标最多的即为答案。#include #include #include using namespace std;const int maxn = 1e6 + 5;const int maxm = 1e5 + 5;typedef原创 2015-04-16 09:45:25 · 1060 阅读 · 0 评论