
ACM_数论
文章平均质量分 56
羁绊残阳
四川大学计算机科学与技术
展开
-
UVa 136 丑数
背景;开始没有充分理解题意:不能被2,3,5以外的其它素数整除。在整除的数学中,素数相当于基,任何除了一以外的数,都是由素数基相乘而得。思路:有第一个丑数1,开始,每一个丑数*2,*3,*5生成下一个丑数。这样依次生成。学习:1.算术基本定理:每一个大于2的数总是由素数因子相乘而得,且个素数因子的个数是确定的。我的代码;#include#includeusing names原创 2015-02-08 11:53:25 · 569 阅读 · 0 评论 -
hdu 1695 欧拉函数 + 容斥原理
分析:本质是求区间内与某个数互质的数的个数,如果区间比这个数小用欧拉函数。比这个数大用全集减去不互质的个数。不互质的个数的计算方法是对当前数进行因数分解,然后求能被p1∪p2∪......∪pnp_1 \cup p_2 \cup ......\cup p_n整除的数的个数,显然用容斥。#include <cstdio>#include <cstring>#include <iostream>#原创 2016-09-23 17:22:47 · 375 阅读 · 0 评论 -
hdu 5768 中国剩余定理 + 容斥原理
-中国剩余定理介绍定理1:两个公差互质的等差数列的交为一个新的等差数列,并且该等差数列的公差为原来两个公差的乘积。{x≡a(mod m1)x≡b(mod m2)\begin{equation}\left \{\begin{aligned}x\equiv a(mod\ m_1)\\x \equiv b(mod \ m_2)\\\end{aligned}\right.\end{equat原创 2016-08-01 11:55:43 · 433 阅读 · 0 评论 -
Codeforces Round #362 (Div. 2) E. PLEASE(数论 + 递推)
Analyse: 这题就是通过一个简单的概率dp退出递推公式,然后观察数列,找出通项公式。 然后对于大指数的情况用费马小定理减小指数,之后快速幂。 最后取余除法用取余逆元来做。 109+710^9 + 7关于3的逆元恰好是3的逆元恰好是\frac{10^9 + 8} {3}$ Get: 数论啊!/**********************jibancanyang************原创 2016-07-19 11:09:51 · 369 阅读 · 0 评论 -
Codeforces Round #201 (Div. 2) C 数论
Problem: 给你n(n<=100)n(n <= 100)个正数,每次从中取任意两个数,他们的差值如果在集合中没有就加入集合中,问最后集合中元素个数的奇偶性? Analyse: 首先考虑只有两个数的情况,发现两个数x,y(x>y)x, y(x > y),可以观察到连续执行操作,可以生成的数的集合是 {k∗gcd(x,y) | k=1,2,..且 k∗gcd(x,y)<=y}\原创 2016-05-10 11:44:01 · 794 阅读 · 1 评论 -
hiho一下 第八十八周 Coordinates (求约数)
@(E ACMer)题意:求两个数的约数按顺序对给出. 分析:求约数的O(n‾‾√)O(\sqrt{n})方法即可.code:#include <iostream>#include <cstdio>#include <cstring>#include <set>#include <map>#include <stack>#include <vector>#include <strin原创 2016-03-06 10:58:57 · 307 阅读 · 0 评论 -
UVa 10006 快速幂运算
知识补充: 如果a和b关于m同于,那么(a - b )是m的整数倍。负数取余运算:不同的语言有不同的方法,其中C和JAVA是按第一个数的符号确定结果的符号,C++则要依据系统而定。 取余运算的发展:1.(a+b)%p=(a%p+b%p)%p1.(a + b) \% p = (a \% p + b \% p) \% p2.(a∗b)%p=(a%p∗b%p)%p2.(a * b) \% p原创 2015-07-31 16:53:16 · 592 阅读 · 0 评论 -
《挑战程序设计竞赛》 大区间内素数的个数
题意:给一个区间边界值很大的区间,但是区间大小较小,求出该区间内所有质数个数。知识补充:因数枚举:分解一个数n,至于要从1 枚举到 n−−√\sqrt n 即可,然后把i和 n / i 当做因数加入vector 整数分解(把一个整数枚举出其质数基连乘的形式):从2开始枚举质数基,然后每次把该整数尽可能的被当前质数除去最大次数,这样该整数就会变小,极大减少枚举量。注意和map搭配使用,记录每原创 2015-07-28 16:59:49 · 1354 阅读 · 0 评论 -
《挑战程序设计竞赛》 扩展欧几里得算法 + SPFA
知识补充:SPFA算法:Bellman-Ford算法的优化算法,方法是: 1.把当前点(最开始是起点)入队,并将标记是否在队列中的visit数组的当前点设为true。原创 2015-07-28 13:59:09 · 758 阅读 · 0 评论 -
hdu 1021 斐波那契2,找规律
背景:暴力必定超数据结构范围,因为斐波那契类型数列,成指数形式爆炸增长。故写了数据发现取余30不影响结果。学习:1.数论类题可以写出几组数据找规律,猜结论。我的代码:#includeint str[1000009] = { 7, 11 };int main(){ int n; for (int i = 2; i <=1000000; i++){ str[i] = (str[i原创 2015-01-03 12:12:38 · 614 阅读 · 0 评论 -
hdu5072 数论 + 容斥
分析:求同色三角形的个数,我们用的是逆转换成求不同色三角形的个数,对于每个顶点,只要和它相连的两个边不同色,它就一定可以组成一个不同色三角形,而且一个三角形会被两次计算。所以一个顶点对不同色三角形的贡献是:prime∗(n−1−unprime)/2prime * (n - 1 - unprime) / 2 问题就转化成了求与一个数不互为质数的数的个数。可以对这个数质因数分解,然后容斥的减去所有含有原创 2016-09-21 11:42:18 · 363 阅读 · 0 评论