
数学
文章平均质量分 68
kopyh
这个作者很懒,什么都没留下…
展开
-
HDU-4777 Rabbit Kingdom
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4777题意:每个兔子有一个数字,数字不互质的兔子会互相打架,现在给出一列兔子,有多组询问,问其中一个区间中的兔子有多少只是不会与其他兔子打架的。思路:13年区域赛的水题,,然而对于我来说并不水。首先分析题意,明显就是求区间中与其他数字均互质的数字的数量。给出的区间较多,可以考虑离原创 2015-08-24 21:17:08 · 885 阅读 · 0 评论 -
LightOJ 1336 Sigma Function
题意:每个数字都是由质因数乘积组成:于是这个数的所有因子之和就是:求小于等于n的数中所有质因子之和是偶数的数的个数。思路:如上式,求所有质因子之和就是每个质因子(p^0+p^1+p^2+……+p^e)的乘积,所以需要每一项的和都是奇数才能使最终结果为奇数。当p==2时必为奇数,当p是大于2的质数时只有e为偶数时结果才为奇数,所以直接dfs出所有的特例,然原创 2015-09-30 18:47:00 · 502 阅读 · 0 评论 -
LightOJ 1259 Goldbach`s Conjecture
题意:求1e7内的哥德巴赫猜想,找出某个数可以由几对素数相加得。思路:直接素数打表暴力枚举即可。代码:#define N 11234567int n,m,sum;bool mark[N];int pri[N/10],cnt;void SP(){ cnt=0; memset(mark,true,sizeof(mark)); mark[0]=原创 2015-10-01 15:21:19 · 452 阅读 · 0 评论 -
LightOJ 1236 Pairs Forming LCM
题意:求小于n的数中lcm(i,j)==n的所有(i,j)数对有多少组。思路:唯一分解定理,真的不好想。首先由唯一分解定理n是由所有ai素因子的bi次幂的乘积组成,两个数的lcm为n那么这两个数对于每一个素因子ai都一定有至少在其中一个数中包含全部ai的bi次幂,并且两个数都不超过bi次幂也不包含其他素因子,如此才能保证相乘之后消去共同素因子还能剩下n的素因子。然后求解总数原创 2015-10-01 17:43:13 · 432 阅读 · 0 评论 -
LightOJ 1220 Mysterious Bacteria
题意:x==B^p,对于每个给定的x找到最大的p。思路:注意x是所有32位有符号整数,所以用long long存安全,并且有负数。对于每个x可以根据唯一分解定理分为不同素因子ai,B一定是不同素因子ai的乘积,每个B都包含一定数量的每个ai,数量就是所有bi的最大公约数,正好平均把所有素因子分成几分。所以只要求所有素因子数量的gcd就行了,注意500ms所以要姿势正确。然后就是原创 2015-10-01 19:02:54 · 741 阅读 · 0 评论 -
LightOJ 1245 Harmonic Number (II)
题意:求n除以1到n的和。思路:数据上限1e9所以就是对暴力1到n的优化,简单数论。代码:int main(){ int i,j,k,kk,n; long long res; scanf("%d",&k); kk=0; while(k--) { scanf("%d",&n); for(res=原创 2015-10-01 16:48:27 · 465 阅读 · 1 评论 -
LightOJ 1138 Trailing Zeroes (III)
题意:求最小的数N满足N!包含x个零。思路:简单数论,0必然是2*5的结果,所以有一对(2,5)就有一个0,2比较多所以找5就行了,判断每个数字的阶乘含有多少个素因子5就是找有多少个5,多少个25……然后二分就行了。代码:#define INF 0x3f3f3f3fint n,m;int flag,sum,ave,ans,res,len,ans1,ans2;int原创 2015-10-02 19:44:42 · 492 阅读 · 0 评论 -
UVA 11426 GCD - Extreme (II)
题目:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2421题意:求所有gcd(i,j)的和,(1思路:神奇的数论题,首先很容易想到打表,只要求出每个i与小于它的数的gcd存在a[i]中,然后扫一遍b[i]=b[i-1]+a[i]原创 2015-10-02 21:46:29 · 576 阅读 · 0 评论 -
UVA 11752 The Super Powers
题目:http://codeforces.com/problemset/problem/582/A题意:求所有小于等于2^64-1的满足a^i==b^j==x的数,升序输出。思路:满足a^i==b^j==x,则必然a^k==b,所以就是某数的合数次方就满足该式,最小合数是4所以暴力枚举2到(1代码:#include#define N 112#define MAXTO原创 2015-10-04 10:11:18 · 444 阅读 · 0 评论 -
POJ 2478 Farey Sequence
题目:http://poj.org/problem?id=2478题意:求分母小于等于n的所有不可化简的真分数。思路:不可化简就是分子分母互质,每个分母包含的这种分数也就是欧拉数,所以求欧拉数打表即可,水题。代码:#include#define N 1123456long long eul[N],sum[N];void init(){ eul[1]=1原创 2015-10-04 10:25:08 · 348 阅读 · 0 评论 -
菜鸟系列——欧拉函数
菜鸟就要老老实实重新学起:欧拉函数在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。欧拉定理a与p互质,a^x==1(mod p)则x==euler[p];模版://直接求解欧拉函数long long euler(long long n){ long long res=n,a=n; for(long long i原创 2015-09-28 23:28:14 · 657 阅读 · 0 评论 -
菜鸟系列——欧几里德与扩展欧几里
菜鸟就要老老实实重新学起:欧几里德算法:就是辗转相除法,小学的东西,gcd(a,b)=gcd(b,a%b),实现简单,用途广泛,,模版:long long gcd(long long x,long long y){ return y?gcd(y,x%y):x; }或者用迭代的写法:long long gcd(long long x,long long y原创 2015-08-19 15:26:27 · 901 阅读 · 0 评论 -
POJ 2115 C Looooops
题目:http://poj.org/problem?id=2115题意:给出A,B,C,K,求在k位无符号整数储存时for(i=a;i!=b;i+=c)循环要循环的次数。思路:K位整型,也就是循环到最大之后从0从新开始,所以上式就是a+c*x==b(MOD l) l==2^k.也就是c*x+l*y==b-a,直接扩展欧几里德求x的最小整数解。代码:#includ原创 2015-10-09 13:45:06 · 396 阅读 · 0 评论 -
HDU 4497 GCD and LCM
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4497题意:给出三个数的GCD和LCM求有多少种a,b,c满足。思路:数论水题,对于GCD和LCM分解质因子,则GCD中包含的质因子一定在a,b,c中都包含,LCM包含GCD中的质因子以及a,b,c其他的质因子。也就是只要LCM中包含GCD中的所有质因子那么就一定有满足的a,b,c,原创 2015-10-12 13:09:49 · 437 阅读 · 0 评论 -
菜鸟系列——康托展开
菜鸟就要老老实实重新学起:康托展开/逆康托展开:主要就是用来求全排列的次序,可用于取某序列的hash值。///康托展开{int fac[] = {1,1,2,6,24,120,720,5040,40320}; //i的阶乘为fac[i]/* 康托展开.{1...n}的全排列由小到大有序,s[]为第几个数 */int KT(int n, int s[]){原创 2015-09-11 20:14:08 · 840 阅读 · 0 评论 -
Lightoj-1356 Prime Independence(质因子分解&&二分图最大独立集)
题目:http://lightoj.com/volume_showproblem.php?problem=1356题意:找出一个集合中的最大独立集,任意两数字之间不能是素数倍数的关系。思路:最大独立集,必然是二分图。最大数字50w,考虑对每个数质因子分解,然后枚举所有除去一个质因子后的数是否存在,存在则建边,考虑到能这样建边的数一定是质因子个数奇偶不同,所以相当于按原创 2016-04-06 19:12:53 · 1390 阅读 · 0 评论 -
HDU-5667 Sequence (矩阵快速幂)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5667题意:fn=⎧⎩⎨⎪⎪1,ab,abfcn−1fn−2,n=1n=2otherwise按这个表达式求出某一位的数字思路:公式整理一下如果只看指数的话就是f(n) = c*f(n-1)+f(n-2)+1,直接求出这个递推关系式就行了,矩阵快速幂直接求。c 1 1原创 2016-04-17 19:26:52 · 525 阅读 · 0 评论 -
Lightoj-1268 Unlucky Strings(kmp&&矩阵快速幂)
题目:http://lightoj.com/volume_showproblem.php?problem=1268题意:给出a个字符,求用这a个字符组成的长度为n的字符串中不包含子串s的个数。思路:首先知道矩阵可以解决这样一类经典问题:给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值把给定的图转为邻接矩阵,即A(i,j)原创 2016-04-18 15:43:39 · 834 阅读 · 0 评论 -
LightOJ 1234 Harmonic Number
题意:求1/1+1/2+1/3+……+1/n的和。n思路:询问较多询问简单就是求个和,所以首先想到打表,但是1e8的double型必然mle,所以就分区域打表,1e6一定能够存下,所以每100个数字存一下,然后询问时就是在这个基础上最多在查100个数。简单打表题。代码:#define N 1123456#define M 100000005int n,m;int f原创 2015-10-01 18:06:10 · 600 阅读 · 0 评论 -
LightOJ 1282 Leading and Trailing
题意:求n^k的前三位和后三位。思路:后三位很好求,快速幂取模就行了,注意n的大小为int上限,所以要用long long 防溢出。前三位就要看保留位数,n^k==(10^(log10(n))) ^ k==10^(log10(n)*k),所以(log10(n)*k)的整数部分决定结果的位数,小数部分决定结果的数字。代码:int n,m;int flag,sum,a原创 2015-10-01 15:03:23 · 710 阅读 · 0 评论 -
POJ-2034 Anti-prime Sequences
题目:http://poj.org/problem?id=2034题意:给出一个数组,要求出一种排列,使得所有的连续d个数之和为合数。思路:d最大为10,存下所有状态下的sum[1~d]深搜传递下去。简单搜索题,一开始有些剪枝的细节没注意wa了次,于是写一下报告。代码:#define N 112345int n,m;int flag,sum,ave,ans,r原创 2015-08-15 13:18:21 · 559 阅读 · 0 评论 -
POJ-3126 Prime Path
题目:http://poj.org/problem?id=3126题意:给出两个素数求二者之间转换的最小步骤数,要求两个只有一位不相同的素数可以互相转换。同时给定素数都是4位数。如果不能转换输出Impossible。思路:简单的搜索题,最近搜索总不能一遍过,所以写一下写一下,,因为只有4位数的素数,直接筛素数打表出有1061个素数。之后bfs从一个搜到另一个就行原创 2015-08-15 15:29:44 · 315 阅读 · 0 评论 -
菜鸟系列——素数筛选-Miller-Rabin素数测试等
菜鸟就要老老实实重新学起:简单素数判断:就是暴力判素数,O(sqrt(n))模版:bool prime(int a){ if(a==0||a==1)return false; if(a==2)return true; if(a%2==0)return false; for(int i=3;i<=sqrt(a);i+=2)原创 2015-08-17 17:01:30 · 444 阅读 · 0 评论 -
POJ-3358Period of an Infinite Binary Expansion
题目:http://poj.org/problem?id=3358题意:给出一个分数,求该分数的小数部分循环节起点与长度。思路:相当神奇的一道题,真真是毫无思路。挣扎无果之后看网上的解题报告也是混乱,后来看到一个写得比较清楚的终于豁然开朗:http://blog.youkuaiyun.com/tsaid/article/details/7304212简单地说就是利用欧拉定理原创 2015-08-18 20:21:49 · 471 阅读 · 0 评论 -
POJ-2429 GCD & LCM Inverse
题目:http://poj.org/problem?id=2429题意:给出gcd与lcm求原来两数,有多解时找出使得a+b最小的那个。思路:模版题,lcm/gcd==(a/gcd)*(b/gcd).所以求出lcm/gcd的所有质因子,自由组合成两组就是答案。再dfs枚举所有情况找出a+b最小的情况。代码:#define N 112345#define原创 2015-08-18 15:24:37 · 456 阅读 · 0 评论 -
菜鸟系列——pollard_rho分解质因子
菜鸟就要老老实实重新学起:pollard_rho分解质因子:利用miller-rabin和pollard_rho算法进行大素数判断和素因子分解。模版:long long factor[1000];//质因数分解结果(刚返回时是无序的)int sum;//质因数的个数。数组小标从0开始#define T 100//随机算法判定次数,N越大,判错概率越小long lo原创 2015-08-18 15:43:53 · 436 阅读 · 0 评论 -
POJ-2992 Divisors
题目:http://poj.org/problem?id=2992题意:给出组合数Cnk.的n与k,求该组合数的约数个数。思路:分解质因子,找出组合数中每个质因子个数加一相乘就是约数个数,只是求约数个数的基本思想,回到这道题,组合数求解有Cnk=n! / (k!*(n-k)!).所以只要分别求出三个阶乘的质因子,之后分子的质因子减去分母的质因子就行了。也就是要求n!的质原创 2015-08-19 12:24:28 · 442 阅读 · 0 评论 -
HDU-4790 Just Random
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4790题意:给出两个区间,在这两个区间中各随机选取一个数,求这两个数的和mod p == m 的概率。思路:数学题,,YY题,,两区间中的数连续,所以加和可以视为一个平行四边形,4个顶点的位置在a+c,a+d,b+c,b+d;其中在a+b到b+c之间的数必然出现d-c次,原创 2015-08-06 18:07:21 · 381 阅读 · 0 评论 -
菜鸟系列——约瑟夫环
菜鸟就要老老实实重新学起:约瑟夫环:就是长度为n的环每数m个就删去,最后留下一个。一般问题有两种,求某种m情况下最后留下的序号核心就是循环倒推:for(i=2;i<=n;i++) res=(res+m)%i;或者求一种m使得某一段序列最后被留下。核心就是枚举m正向循环,同时取模求当前删去数的序号:res=0;k=1;for(i=0;i<n;i+原创 2015-08-20 13:54:44 · 456 阅读 · 0 评论 -
菜鸟系列——容斥原理
菜鸟就要老老实实重新学起:容斥原理:容斥原理就是求有重复覆盖区间的总和大小,eg: //大小为n1,n2,n3的三个集合,有多少种组合//二集合中第i个不能与a[i]个一集合的项组合,不能与b[i]个三集合的项组合int a[N],b[N];long long solve(int n2,int n2,int n3){ long long sum=n1*n2*原创 2015-09-07 14:45:06 · 540 阅读 · 0 评论 -
HDU-1796 How many integers can you find || POJ-3695 Rectangles || POJ-3904 Sky Code
题目:3道容斥原理的题,抓紧时间再学点东西。http://acm.hdu.edu.cn/showproblem.php?pid=1796http://poj.org/problem?id=3695http://poj.org/problem?id=3904HDU-1796 How many integers can you find:POJ-3695原创 2015-09-07 15:49:18 · 377 阅读 · 0 评论 -
HDU-4762 Cut the Cake
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4762题意:一个蛋糕上随机放n个草莓,蛋糕要切成m份,每份大小形状完全一样。求小明先选的那块蛋糕上有所有草莓的概率。思路:就是推公式加高精度。首先以其中一个草莓为标准,就有n种可能,其他草莓在这个草莓所在那块的概率是1/m。总的概率就是 n*(m^(n-1)).然后直接高精度原创 2015-08-26 19:32:36 · 518 阅读 · 0 评论 -
LightOJ-1370 Bi-shoe and Phi-shoe
题意:给出一些数字,对于每个数字找到一个欧拉函数值大于等于这个数的数,求找到的所有数的最小和。思路:首先关于欧拉函数:http://blog.youkuaiyun.com/kopyh/article/details/48792563这道题只要欧拉函数打表,对输入排序然后扫一遍就行了。代码:#define N 1123456int n,m;int flag,sum,av原创 2015-09-28 23:30:34 · 1184 阅读 · 0 评论 -
LightOJ-1356 Prime Independence
题意:找出一些数字的最大质独立集,就是集合能的所有数互相之间不会出现 a[i]==t*a[j] (t是质数) 的情况。思路:首先想最大独立集对于一般图是NP问题,通常只有求二分图最大独立集,然后就是如何把这些数字分为二分图。能够想到如果一个数字等于另一个数字乘以一个质数,那么这两个数字的质因子分解应该只有这一个质数的差别。也就是只会多一个质数,数字上限只有500000,完全可以原创 2015-09-28 23:47:29 · 1472 阅读 · 0 评论 -
LightOJ 1341 Aladdin and the Flying Carpet
题意:a可以写成两个因子相乘的形式,要找出一共有多少中两个不同因子相乘的组合,要求每个因子都大于b思路:求两个因子的组合只要求出所有因子数然后除以二就行了,求因子数为:sum=(s[0]+1)*(s[1]+1)*(s[2]+1)……//s[i]为a的一个素因子的个数。然后暴力求出小于b的所有因子减去就行了,因为当b>sqrt(a)时所有因子都不满足,所以最大只要扫到1e6原创 2015-09-30 16:23:53 · 430 阅读 · 0 评论 -
LightOJ 1214 Large Division
题意:求a是否能被b整除。思路:水题,模拟手算除法就行了。代码:#define N 11234long long n,m;char s[N];int main(){ int i,j,k,kk,t,x,y,z; scanf("%d",&k); kk=0; while(k--) { scanf("%s%lld",s原创 2015-10-01 19:35:12 · 393 阅读 · 0 评论 -
LightOJ 1213 Fantasy of a Summation
题意:给出一段代码看懂简化下,Lightoj上有好多这种数论题了,这题就是说有k层循环每层遍历n个数字,最后把k层遍历到的数字全部加和取模。思路:水题,稍微推下公式就有res=n^k*k/n*sum%mod;就是一共有n^k种组合,每种组合k个数字,平均分给n个数字,之后快速幂解决。代码:long long n,m,mod,sum,t;long long power(原创 2015-10-01 19:49:32 · 643 阅读 · 0 评论 -
HDU5943 Kingdom of Obsession(匹配问题)
题目:acm.split.hdu.edu.cn/showproblem.php?pid=5943题意:有n个人,每个人的标号以此是s+1到s+n,要求将所有人重新排序之后满足每个人的位置y能够保证被他的标号整除,就是数组重排之后满足每一位的a[i]%i==0。思路:首先很容易想到一定区间之内最多只有一个质数,所以多于一个质数的直接NO,那么这段区间不会很长,考虑直接二分图匹原创 2016-10-29 18:37:28 · 1141 阅读 · 0 评论