数论-取模
ruclion
天上一日,地下十年
展开
-
TC SRM657 Div2 1000
题意:P(x) = ax^2 + bx + c, 其中,abc ~0--999,999,999。 要求找出任意一个x:范围0--999,999,999 并且 使得p(x)%1e9==0.题解:关键是构造不知道怎么构造。。答案的方法:1e9分成2^9*5^9两个,发现如果p(x)%M,那么x%M种情况就行了。根据2^9*5^9进行x的枚举。如果均有得数,那么进行下一步构造:x是%5^9的一个数,原创 2015-05-08 16:38:49 · 447 阅读 · 0 评论 -
poj1284
求原根题目描述:原根个数:满足{ (xi mod p) | 1 <= i <= p-1 } == { 1, …, p-1 }的x称为模p的原根。给出模p,求原根个数题解:原根的定义搞到n(x) = phi(phi(x)).)所有的奇素数都是有原根的重点:原根怎么得到?下面的证明: 假设奇素数n的原根为r,那么r,r^1,r^2…r^phi(n)是模n不同于的, 由于(r^i)^(phi(n))=原创 2015-07-07 10:37:57 · 387 阅读 · 0 评论 -
poj 1286
题目描述:波利亚计数.有旋转和对称.旋转是gcd,对称画图自己看.之后就是3^x然后再除以2n题解:rt重点:波利亚计数.也可以枚举之后数环的个数代码:#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <cmath>#include <ctype.h>#include <limi原创 2015-07-07 11:21:18 · 381 阅读 · 0 评论 -
poj2407
题目描述:就是求小于它的互质的个数.但是是广泛定义.1相对于1也算有一个质数.题解:水重点:代码:#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <cmath>#include <ctype.h>#include <limits.h>#include <cstdlib>#i原创 2015-07-07 11:18:52 · 366 阅读 · 0 评论 -
poj2720
指数模上一个小的合数.题目描述:轮回:定义递归函数f(x) = bf(x-1) if x > 0, and f(0)=1,给出b和x,求f(x)的最后n位数。题解:x^y%p,如果p是质数,那么就有x^p-1=1(modp),指数对p-1取模就行了.但是p不是质数,那么如果x和p互质,可以用欧拉定理:x^phi(p)=1(modp),如果x和p也不互质,那么就是本题,x^(y) = x^(y%phi原创 2015-07-07 11:15:50 · 467 阅读 · 0 评论 -
poj2115
循环多少次题目描述:题意:for(int i = a; i != b; i = (i + c) % (2 ^ k)) 能运行多少次题解:其实就是求 ax+by=c,x的最小整数解.重点:解的标准步骤:先gcd(a,b),之后同时除以.保证a和b互质.之后求ax+by=1,求出来x之后先%b搞的小一点,之后重点:x*c,之后模的还是b.重点是之后模的还是b代码:#include <iostream>原创 2015-07-07 10:41:59 · 319 阅读 · 0 评论 -
AOJ 2164
题目描述:n个人,k个相同的人不能连续坐一起,n个人只能是A或者B.旋转不算数.求方案数.题解:首先旋转我们可以用波利亚计数.之后变成了:安排x个人,x人内部不超过k,而且x的头和尾如果一样,之和也不能超过k.对于这种,其实是n^2的空间的dp.强制A结尾,并且记录A结尾的A的个数.dp_a[i][j],A开头,i为长度,结尾j个A.dp_b[i][j],B开头,i为长度,结尾j个B.先dp出来这个原创 2015-07-07 11:31:21 · 671 阅读 · 0 评论 -
poj 1150
题目描述:超大组合数:求超大组合数P(n, m)的最后一个非零位。题解:n!/m!的最后一位.可以看出来有几个2和几个5,搞出来有几个10.然后再除以他们之后%10.发现阶乘直接%10不行,因为10是质合数.因此可能这样做:先拆成%5和%2但是发现除以10的x次方之后的数字不好写成形式.于是换这样的方法:只需要是个位,因此只看个位:先看2和5的多少.如果5多于2,一定是5.如果2等于5.那么剩下的就原创 2015-07-07 10:32:53 · 369 阅读 · 0 评论 -
poj 1811
题目描述:大质数(特别大)的判定质数和分解质数.题解:Miller_Rabin 算法进行素数测试 和 pollard_rho 算法进行质因素分解重点:代码:#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <cmath>#include <ctype.h>#include原创 2015-07-08 21:26:46 · 395 阅读 · 0 评论 -
poj 2689
题目描述:一个区间,[L,U], U-L<1e6. 并且U>L. U和L int范围内.问在L到U内相邻最近的两个相邻质数和相邻最远的两个相邻质数.题解:区间长度小于1e6,然后合数一定有小于2^16的质因子. 先搞出来2^16的质因子然后乘筛出合数.重点:代码:#include <iostream>#include <cstdio>#include <cstring>#include <s原创 2015-07-08 21:29:33 · 359 阅读 · 0 评论 -
用对角线将凸n边行分成三角形,问有多少种分法
题目描述:用对角线将凸n~1e6边行分成三角形,问有多少种分法.并且最后要%一个不是质数的m题解:第一步是用dp推出来怎么算.dp[n] = dp[2]*dp[n-1]….dp[k]dp[n-k+1]..dp[n-1][2], dp[2] = 1,dp[3] = 1,第二步是加速dp,发现这是一个卡特兰数,令c[n-1]=dp[n],然后c[n-1] = …. 相加都是n-1.c[1] = 1,原创 2015-06-26 15:52:13 · 1722 阅读 · 0 评论 -
hdu5526
小明和他的矩阵题目描述:Tom放学回家的路上,看到天空中出现一个矩阵。Tom发现,如果矩阵的行、列从0开始标号,第i行第j列的数记为ai,j,那么ai,j=Cji 如果i < j,那么ai,j=0 Tom突发奇想,想求一个矩形范围内所有数的和。Tom急着回家,当然不会自己算,所以就把任务交给你了。 因为数可能很大,答案对一个质数p取模 输入:输入包含多组数据(大约8组)。每组数据只有一行五个原创 2015-05-10 11:58:14 · 399 阅读 · 0 评论 -
poj 3708
题目描述:抽象一下就是:先给出一个100位的大整数.转换成d<100进制的数.然后有一个同样的目标数.d进制下位数要一样.每次转换i对应i位,最高位用a,低位用b.然后问最少转换几次能够到目标数.题解:第一步是高精度的进制转换.第二步是100个数,每个数求出来第一次转成功的次数,以及循环数(注意,感觉题目有毛病,其实就是第二次遇到目标数-第一次的次数就是循环数,竟然可能没有循环.标准的应该是随便找个原创 2015-07-07 11:04:30 · 399 阅读 · 0 评论