
数论
Noooooorth
能够放弃的东西从来都不叫梦想
展开
-
HDU 1163 Eddy's digital Roots(九余数定理+快速幂)
九余数法,也叫弃九法,可以用来求一个数的弃九数,也能叫“根数”(即求这个数所有位的数的和,如果不是10以内的数,就重复这个过程,直到变成10以内的数,比如128的结果就是2,首先把128中的1,2,8相加得到11,再把11的1,1相加得2),求弃九数的方法就是拿这个数对9取模,若为0则弃九数是9,否则为余数。 更进一步可以用来验算加减运算是否正确,比如1863+716=2579,首先1863的弃九数为9,716弃九数为5,2579弃九数为4,因为(9+5)%9=4,所以加法运算很可能正确(注意!仅仅是很可能原创 2015-07-24 21:10:23 · 2198 阅读 · 1 评论 -
HDU 3501 Calculation 2(欧拉函数)
对于给定的n,输出小于n的且不与n互质的正整数的和。 做这道题首先要知道欧拉函数,对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目;而且要知道这样一个结论:如果gcd(n,i)=1,则gcd(n,n-i)=1。知道以上两条结论,这道题的思路就大致清晰了。 首先可以知道在[1,n-1]中与n互质的数是成对出现的,即如果i与n互质,则(n-i)一定与n互质。这时我们发现这对于n互质的数的和为n。所以可以得出结论:小于等于n的同时与n互质的数的和是n*Euler(n)/2,Euler(n)表示小于n与n原创 2015-07-28 23:55:03 · 2081 阅读 · 0 评论 -
Vijos 1164 曹冲养猪(中国剩余定理)
找出最小的x使得x%m[0]=r[0],x%m[1]=r[1]....原创 2015-08-19 10:39:01 · 2081 阅读 · 0 评论 -
HDU 2601 An easy problem(暴力枚举/质因子分解)
求满足n=i*j+i+j(0<i<=j)的i、j的种数。 第一种方法:首先这个等式可以化成(n+1)=(i+1)*(j+1),所以只要求出(n+1)的约数的种数即可。同时注意到i与j呈负相关,同时i小于等于j,所以只需要从2到sqrt(n+1)枚举(从2开始是因为i最小为1,我们枚举的是(i+1))。但是,好暴力啊。所以我们可以用筛法先保存1e5以内的素数,再通过质因子分解求出约数数量。 第二种方法:观察等式n=i*j+i+j,可以转化成n-i=(i+1)*j,发现暴力枚举i,判断(n-i)%(n+1)==原创 2015-07-28 23:50:28 · 2077 阅读 · 0 评论 -
POJ 1061 青蛙的约会(拓展欧几里得)
2只青蛙分别站在x和y处,每次分别能跳m和n米,维度线总长L,求跳了几次后会碰面,若永远不能碰面,则输出-1.原创 2015-08-17 23:50:26 · 1856 阅读 · 0 评论 -
ACdream 1420 High Speed Trains(容斥原理+高精度)
n个点,每个点至少连一条边,求方案数。原创 2015-08-26 15:52:26 · 1591 阅读 · 3 评论 -
CodeForces 300C Beautiful Numbers(乘法逆元/费马小定理+组合数公式+快速幂)
给出a和b,如果一个数每一位都是a或b,那么我们称这个数为good,在good的基础上,如果这个数的每一位之和也是good,那么这个数是excellent。求长度为n的excellent数的个数mod(1e9+7)。ps:1e9+7是一个质数。原创 2015-08-18 00:05:21 · 3399 阅读 · 0 评论 -
POJ 1077 Eight & HDU 1043 Eight(康托展开+BFS)
题目链接:1077 -- Eight Problem - 1043 两个题目几乎完全一致。不同的是,HDU的八数码这道题需要一次bfs,起点为123456789X,遍历完所有状态,同时用pre数组记录上一个状态,然后每次输入只需要一个while进行O(1)的查询。 方法没有什么特殊的,我用的是普通的bfs。这道题和其他的搜索题目不一样的一点是,9个格子,太大没有办法标记。这时可以利用康托展开。原创 2016-07-13 01:04:35 · 402 阅读 · 0 评论 -
HDU 1796 How many integers can you find(容斥原理+二进制/DFS)
求n以内能够被所给的集合中的数整除的数的个数。原创 2015-08-17 23:58:38 · 2159 阅读 · 0 评论