Algorithm_数论
文章平均质量分 80
niuox
这个作者很懒,什么都没留下…
展开
-
spoj 3179 DPEQN 题解
题目连接:http://www.spoj.pl/problems/DPEQN/本题是探求多元一次同余方程的解法,虽然本题只要求一个解,但是我们完全可以求出所有解。我们先来复习一下一元一次同余方程的解法(算法导论中有详细介绍,可以参看)。一元一次同余方程的形式如下:我们知道,本方程有解的充分必要条件是 gcd(a,n) | b 。如果有解,解的个数(当然是在 [0,n原创 2012-11-27 14:43:45 · 1587 阅读 · 0 评论 -
Uva 11806 Cheerleaders
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2906本题我本来想逐步分类四个角的情况。但是发现分类之间是没有重复的,而内部是有重复的。错误代码如下。#include #include #include #include原创 2013-07-22 21:58:21 · 1105 阅读 · 2 评论 -
约瑟夫问题
问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。我们知道第一个人(编号一定是(m-1) mod n) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m mod n的人开始):k k+1 k+2 ... n-2,n-1,0,1,2,... k-2并且从k开始报0。现在我们把他们的编号做一下转换:原创 2013-07-08 13:39:36 · 6269 阅读 · 1 评论 -
Hoj 2577 Simple Computing II
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2577以前做过一题:Hoj 2576 Simple Computing :http://blog.csdn.net/niuox/article/details/8592133基本思想都是用容斥原理。hoj 2576 给出一组数x1...xn,问从1到m中能有多少个数能够被这组数中的至少一个数原创 2013-04-17 14:34:39 · 1206 阅读 · 0 评论 -
Uva 6173 B-Casting
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4184求b进制下的a mod (b-1)的值。(a*b^n)%(b-1) == a % (b-1),很好推导。 #include #include #include原创 2013-04-28 23:12:27 · 1040 阅读 · 0 评论 -
Uva 6174 Pen Counts
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4185题意:给定一个三角形的周长n, 问能组成的三角形的个数。若三边均不等,则个数加一分析:假定三角形的三条边长分别为x , y , z 其中 x 若x已知, 则可得原创 2013-04-30 15:41:11 · 1103 阅读 · 0 评论 -
Uva 6176 Faulhaber's Triangle
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4187题意:求多项幂和的对应系数,由于题目已经给出公式,所以较简单。关键是每一行第一列的值,只要用其余行的分数相加,1减去其和即可。求 a/b + c/d 的和,可以化为原创 2013-04-30 13:57:40 · 969 阅读 · 0 评论 -
Hoj 2652 Thanks giving Day
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2562题意:求任意年的11月份的第四个星期日的具体日期(感恩节)的日期。方法一:直接模拟,999年11月1日是星期五(可以试出来)。#include #include #include #include #include #include #include #include原创 2013-04-22 09:51:39 · 814 阅读 · 0 评论 -
Hoj 2305 Diophantus of Alexandria
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2305题意:给定的数n,求1/x + 1/y = 1/n 有多少种情况,x我们很容易求得:n第一种思路是枚举遍历x,判断y是不是正整数就行了,注意判断的手段,用floor(y+0.5)?= y来判断。但是很不幸会超时。#include #include #include #in原创 2013-04-15 22:00:06 · 676 阅读 · 0 评论 -
Swust 485 自守数 / Poj 2205 Self-Replicating Numbers
题目连接:第一题:http://acm.swust.edu.cn/oj/problem/485/第二题:http://poj.org/problem?id=2205两题都是自守数问题。第一题是简单的十进制的自守数判断:以376为例376 被乘数X 376 乘数----------2256 第一个部分积=被乘数*乘数的倒数第一位2632 第二个部分积=被乘数*原创 2013-03-29 11:13:40 · 1142 阅读 · 0 评论 -
Hoj 1552 Prime Distance
题目:http://acm.hit.edu.cn/hoj/problem/view?id=1552本题求一段区间内距离最近和最远的素数对儿。先求出[1,50000]内的素数,然后进行生成更大范围内的素数。#include #include #include #include using namespace std;#define N 500000long long原创 2013-02-22 17:01:50 · 535 阅读 · 0 评论 -
Hoj 2010 GCD & LCM Inverse
题目:http://acm.hit.edu.cn/hoj/problem/view?id=2010题意就是已知两个数的最大公约数gcd和最小公倍数lcm求这两个数a, b。由欧几里德求最大公约数的算法可以知道,a/gcd * b/gcd = lcm/gcd,所以问题变为把lcm/gcd分解为两个互质的数的乘积。这样就可以枚举了,从lcm/gcd的平方根开始枚举a即可。由于数据比较大,所以用了l原创 2013-03-05 19:41:23 · 1587 阅读 · 1 评论 -
Hoj 2276 Count prime
题目:http://acm.hit.edu.cn/hoj/problem/view?id=2276这题折磨我好长时间啊。关键是数据范围太大了。所以朴素的方法筛素数行不通。因此现在[1,500000]范围内筛素数,因为[1,2147483647]范围内的合数的质因子肯定在[1,500000]范围内,再由此范围的素数淘汰掉以此素数为质因数的合数即可。用于用到prim[i]*prim[i原创 2013-02-18 16:19:35 · 707 阅读 · 0 评论 -
Hoj 2576 Simple Computing
题目:http://acm.hit.edu.cn/hoj/problem/view?id=2576题意:给出一组数x1...xn,问从1到m中能有多少个数能够最少能被这组数中的一个整除本题要用组合数学中容斥原理的思想。容斥原理中对应的经典问题是:求数区间[1..r]中与n互质的数的个数。n可以是任意整数。解决这个问题的思路是:解决它的逆问题:求[1..r]中与n不互原创 2013-02-19 18:18:01 · 969 阅读 · 0 评论 -
Hoj 1356 Prime Judge
题目连接:http://acm.hit.edu.cn/hoj/problem/view?id=1356本题我曾想以[1,500000]内的质因子为基础来判定整个int范围的质数,但是超时。无奈用Miller Rabin算法吧。根据 :费尔马小定理,如果 n 为素数,那么对于小于n的数a有a^(n-1) = 1(mod n)那么我们可以随机生成一个a(a关于a^b%n,用快速原创 2013-02-18 23:33:17 · 811 阅读 · 0 评论 -
筛素数解法
常用的筛素数的算有两种:1). Eratosthenes筛法:把[1,N]素数p的倍数筛出去,剩余的就是素数。int prime[N], np;bool vis[N];void get_prime(){ np = 0; memset(vis, 0, sizeof(vis)); for(int i = 2; i < N; ++i) {原创 2013-02-18 16:26:34 · 1847 阅读 · 0 评论 -
Hoj 1004 Prime Palindromes
本题练习穷举。题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=1004本题以前做过,之所以记录本题,是因为看到一种生成回文数的有效方法,套用此模板可以快速生成1 - 10^9范围内的回文数表。虽然看似繁杂,但是却非常有效。本题是求一定范围内的所有回文素数。#include #include #include #include #原创 2013-01-22 16:31:37 · 1619 阅读 · 0 评论 -
求解斐波那切数列的几种算法
斐波那切数列我们并不陌生。在百度百科中我们可以找到有关它的定义:斐波纳契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。斐波那切数列的通项公式为:我们甚至可以找到它的几个应用:1.原创 2012-02-12 22:48:59 · 9067 阅读 · 1 评论 -
Hoj 3040 Team Mate
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=3040题意:给定一串长度为n的数,求任意几个数的组合和能否是n的倍数。只要求输出其中一种情况即可。这题正解应该是用抽屉原理:依次求出前缀和s[i],那么前缀和相等的s[i]和s[j]之间的数的和就是n的倍数。即(i,j]#include #include #include #inclu原创 2013-08-12 10:55:17 · 908 阅读 · 0 评论