数论
明日可7
SDUST_SE_17_QiuPeng
Coding my youth
展开
-
UVA Almost Prime Numbers (数论)
题意:Almost Prime Number 是一个能且只能被一个素数整除的非素数,求一个区间内这样类型的数的个数。思路:这个类型的数n = p^b (p是素数,b是大于1的整数),先用筛法求出10e6内的素数,然后将每个素数的不大于10e12的n(n=1,2,3......)次方存到一个有序数组里,最后用二分查找。代码:#include <map> #include <set&...原创 2018-05-10 15:22:49 · 154 阅读 · 0 评论 -
UVA 10892 LCM Cardinality (分解质因数)
题意:给一个数n,让你求他可以是多少组数的最小公倍数。比如12,(1,12),(2,6),(3,4)等的最小公倍数都是12 分析:本题需要用到唯一分解定理 a=p1^a1*p2^a2*p3^a3......... b=p1^b1*p2^b2*p3^b3.........(其中pi为质因数,ai,bi为幂次) 对于他们的最小公倍数 c=p1^c1*p2^c2*p3^c3......... ...原创 2018-07-23 20:26:55 · 418 阅读 · 0 评论 -
UVA 12101 Prime Path (素数筛+BFS)
题意:给一个四位数的素数,求通过几步变换(一次只能换一个位置的数,且变换过程中只能出现素数)变为目标四位数 分析:素数筛法+BFS,BFS时更换一个数字如果符合条件就加入队列 代码: #include <map> #include <set> #include <cmath> #include <queue> #include <s...原创 2018-07-25 15:03:08 · 337 阅读 · 0 评论 -
POJ - 3090 Visible Lattice Points (欧拉函数/递推)
题意:给你一个n*n的网格,任意一点和(0,0)连线,可以组成一条直线,前面的点可以挡住后面的点,问你从原点能看到的点到底有多少个 分析:这道题一开始没用欧拉函数做,先用的递推打表的方法,由后一个和前一个的关系得出结果, 其实这是一个很明显的欧拉函数题(菜鸡没发现),我们可以把整个坐标系以 y=x 直线分为两部分,然后求出下半部分的点在乘2就好了,我们可以发现符合条件的点的X,Y坐标必须是互质...原创 2018-07-25 15:36:18 · 369 阅读 · 0 评论 -
HDU 5446 Unknown Treasure (lucas + 中国剩余定理)
题意:计算C(n,m)%(M1*M2*M3......*Mn) 其中Mi是互不相同的素数 分析:如果是C(n,m)%素数 我们直接使用lucas, 但是现在的模是多个素数相乘,所以我们需要配合中国剩余定理,先使用lucas对每一个Mi进行取模运算,保留结果,最后使用中国剩余定理 代码: #include <map> #include <set> #include &...原创 2018-08-21 21:58:53 · 1671 阅读 · 0 评论 -
UVA Sum of Different Primes (数论+dp)
题意:给出一个数,用k个不同的素数组成他,素数不能重复,求有多少种方法 分析:首先打一个表,然后用类似01背包的方法来写 dp[i][j]表示的是数字i用j个数字来组成的方法数,状态转移方程如下 dp[i][j] = sum{dp[i-prime][k-1]}; for(int i=0;i<tot;i++){ for(int j=maxn-1;j>=prime...原创 2019-02-06 23:04:24 · 166 阅读 · 0 评论