![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
文章平均质量分 67
水杯
这个作者很懒,什么都没留下…
展开
-
【扩展Baby Step Giant Step解决离散对数问题】(转自AC神牛。。。。)
这个我还是留在后面学吧。。。。有点小难。。。T_T.........原创帖!转载请注明作者 AekdyCoin !【普通Baby Step Giant Step】【问题模型】求解A^x = B (mod C) 中 0 【思路】我们可以做一个转载 2011-09-12 09:33:19 · 830 阅读 · 0 评论 -
poj 1850(组合。。。。。)
字典序的一个排列,而且后面的数只比前面的大。。。。这就很方便来求了。。。。对于长度小于输入的str的长度的话。。。。直接加上所有情况的个数。。然后再从头枚举到给定的序列一共多少种排列即可。。。#include#include#includeusing nam原创 2011-09-14 14:01:41 · 413 阅读 · 0 评论 -
hdu 1695 ( “变态” 的欧拉函数 加 容斥原理)
AekdyCoin大牛博客说这里用到的欧拉跟筛法求的欧拉不一样。。。我还不信(一心想用线性筛法来优化,因为刚好用到了线性素数筛。。。。就没多想)。。。。。一直wa。。。。。。OMG。。。。说一下这个题吧。。。就是1到n和1到m两个区间。。。。找出最大公约数是k的对数。。。。。原创 2011-09-12 21:48:16 · 546 阅读 · 0 评论 -
poj 3370(鸽巢原理。。。水)
过了刚才的那题2356。。这题稍微改一下就可以了。。。。#include#include#includeusing namespace std;struct node{ bool k; int ki;}ka[100010];int ma原创 2011-09-12 10:55:19 · 597 阅读 · 0 评论 -
poj 2356(鸽巢原理。。。。。)
简单些了一下。。。。1Y。。嗨皮。。。这个题没说是连续的。。。可discuss都说应该是。。我也就没多想了。。。每次都是求前n项和。。。然后对n取模。。如果为0 则前n项为所求。。。。。如果求完之后没有0。。。那么这些余数是1到n-1 一共n个所以必定有两个以上的余数是相同的原创 2011-09-12 10:23:21 · 535 阅读 · 0 评论 -
poj 1222(高斯消元法求解。。。。)
捣鼓了一整天。。。。终于弄明白了这个怎么来求解。。。。这个题的对立面就是说给你一个全熄的矩阵。。。经过一系列变化。。。让它跟题中输入的初始矩阵相等就可以了(mod 2 相当与异或所以可以这样来)。。。。没按下一个按钮相当与加上一个0 1 0 1 1 1 0 1 0原创 2011-09-08 16:57:29 · 615 阅读 · 0 评论 -
poj 1781(约瑟夫问题二进制求解。。。。)
具体数学一书中对于约瑟夫问题有具体的讲解。。。特别详细。。建议大家看一下。。。。这里用的是一个报数开始后,第2个人出局的原始问题的一个结论。。。。将n用2进制表示出来。。。然后循环左移一位。。。因为第一位肯定是1,所以也可以认为是左移一位之后末位加一。。。。最后表示出来的十进原创 2011-09-06 21:31:06 · 1650 阅读 · 1 评论 -
poj 2891(中国剩余定理 ------迭代法来求解)
这个题不能直接应用中国剩余定理,因为m的值可能不互素。。。。所以用两两求解的方法来求解(应该是叫迭代吧。。。自己是这么跟别人说的。。。)看下面的例子。。x = 1 (mod 5)x = 2 (mod 6)x = 3 (mod 7)首先我们把第一个方程写成 x =原创 2011-09-04 11:25:32 · 808 阅读 · 0 评论 -
poj 2992(因子分解。。。。)
一直在想用线性筛素数的过程中,来处理组合的计算。。。。想了一下午,无果。。。。。感觉应该是可以的。。。。组后还是用了很土的方法过的。。。200ms++。。这里用了C[ n ] [ k ] = n! / ( k! * ( n - k ) ! ) 然后把n!=p1^a1+p2原创 2011-09-02 17:07:40 · 419 阅读 · 0 评论 -
poj 2478(快速求解欧拉函数优化版。。。)
之前一直在用void get_eular() { memset(eul,0,sizeof(eul)); eul[1]=1; for(int i=2;i<maxlen;i++) if(!eul[i]) for(原创 2011-09-01 14:44:09 · 750 阅读 · 0 评论 -
poj 2407(欧拉函数)
赤裸裸的欧拉函数应用。。。。没什么说的。。。#includeusing namespace std;int eular(int n){ int sum=1; for(int i=2;i*i<=n;i++) if(n%i==0){原创 2011-08-31 09:10:21 · 423 阅读 · 0 评论 -
poj 2689(区间筛选素数。。。很经典)
利用一个小区间的素数表来推出目标区间的素数表,再来求解。。。。算是对筛选素数的一个经典应用了。。。。做起来很有意思。。。(int 会RE的)#include #include#includeusing namespace std;#define maxle原创 2011-08-27 10:46:42 · 684 阅读 · 0 评论 -
poj 3518(筛选素数)
#include #include#includeusing namespace std;#define maxlen 1300000bool a[maxlen];inline void isp(){ memset(a,1,sizeof(a)); a[原创 2011-08-26 20:46:48 · 394 阅读 · 0 评论 -
poj 2034(dfs。。。居然别一个水题卡住了)
刚开始的时候,没读懂题意直接开始写了。。。。样例不过。。因为没看到这句话 “all consecutive subsequences of length 2,3,...,d sum to a composite number” 改完之后居然无限TLE 这个实在费解。。。后来发原创 2011-08-15 14:08:10 · 703 阅读 · 0 评论 -
poj 1365(素数分解。。。)
简单的一个水题。。。输出的时候,我记着曾经校赛的时候有一个题直接计算输出会超时,但这个不卡时间,所以都可以。。。#include#include#includeusing namespace std;int ans[32800],prim[32800],p原创 2011-08-15 10:56:57 · 645 阅读 · 0 评论 -
poj 2739(暴力求解)
这个题没想出什么好的算法。。。。只是试一试的心态。。居然都16ms过了。。。数据不强。。。。#include#include#includeusing namespace std;int prim[10000], p;bool isprim[10005]原创 2011-08-15 15:06:44 · 493 阅读 · 0 评论 -
zoj 2562(反素数)
对于任何正整数x,记约数的个数记做g(x).例如g(1)=1,g(6)=4. 如果某个正整数x满足:对于任意i(0性质一:一个反素数的质因子必然是从2开始连续的质数.性质二:p=2^t1*3^t2*5^t3*7^t4.....必然t1>=t2>=t3>=....#原创 2011-08-27 20:50:05 · 570 阅读 · 0 评论 -
poj 2917(高斯消元。。。。。泪水呀)
做了一天多了吧。。。。先是学习大牛们的优化版的程序。。。。不知道哪里写错了。。。就是不过。。。最后还是自己按线性代数的解方程一步步来的。。。。AC是AC了。。效率不是很高的。。。。。。今天网络赛就耽误了一下。。。现在终于写好了。。。泪水呀。。。。好像是discuss里提到多解原创 2011-09-10 20:45:48 · 583 阅读 · 0 评论 -
poj 1830(高斯消元求解。。。。)
理解了方程的一个细节。。。程序中给出。。。。#include#include#includeusing namespace std;int map1[35][35], ans, m, n;int a[35],b[35];int gauss() {原创 2011-09-08 21:47:06 · 634 阅读 · 0 评论 -
poj 1681(高斯消元。。。)
再次认真学习高斯消元。。。。感觉还有好多不会处理的。。。自由基的处理还没遇到(discuss里说不用处理也能过的。。。就没处理。。参照了别人的模板。。。自己写的很撮)。。。。收获很多。。。继续ing。。。。#include#include#includeusin原创 2011-09-08 20:53:51 · 2103 阅读 · 1 评论 -
poj 2244(约瑟夫问题。。。)
这个和1012题 如出一辙。。。相比之下还要简单一些。。。。直接应用约瑟夫递推公式枚举求解就可以了。。。#include #includeusing namespace std;int main(int argc, char** argv) { int原创 2011-09-07 13:41:42 · 473 阅读 · 0 评论 -
poj 1012(约瑟夫问题。。。)
虽说是不打表,但还是用了记忆话搜索。。。我感觉就是跟打表无差别了。。。。。大概的思路就是从 n+1 开始搜索直到找到满足条件的值就记下来。。。。。写程序的时候,最好是把序列变成 0到2*n-1 这样取模的时候不用考虑那么多情况。。。。然后结果+1 就可以了。。。#原创 2011-09-07 11:18:30 · 457 阅读 · 0 评论 -
poj 3517(约瑟夫环。。。。。)
无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm),当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的。我们注意到原问题仅仅是要求出最后的胜利者的序号,而不是要读者模拟整个过程。因此如果要原创 2011-09-06 19:38:22 · 640 阅读 · 0 评论 -
poj 2115(线性同余方程。。。。。)
记错了一个定理。。。。无情的WA了。。。。。。最后求出的解要多n/d取模。。。。因为两个数不一定互素。。。。。。一个定理: 设d=gcd(a,n),假定对整数x和y满足d=ax+by。 如果d | b,则方程ax=b(mod n)有一个解x0满足x0=x*(b/d) mod原创 2011-09-04 15:28:57 · 452 阅读 · 0 评论 -
poj 1061(线性同余方程。。。。)
线性同余方程 a*x=b (mod n) ;方程有解当且仅当b 能够被 a 与 n 的最大公约数整除,即gcd(a,n)| b;如果解出一个解x0,那么方程所有的解克表示为( x0+k*( n / d ) ) d 为a和n的最大公约数;此题可以列出方程m*t+x=n*t原创 2011-09-03 09:54:01 · 443 阅读 · 0 评论 -
poj 1006(中国剩余定理)
手动算出来就可以中间过程。。。。。然后带进去就可以了。。。。#include using namespace std;int main(int argc, char** argv) { int p,i,e,d,ans,cas=1; while(原创 2011-09-02 21:03:38 · 320 阅读 · 0 评论 -
poj 3090(法雷级数。。。)
不知道法雷级数的可以看一下百度百科里的介绍。。。很详细。。。R.亨斯贝尔格著李忠翻译的《数学中的智巧》一书,介绍了法雷级数。这里每一行从0/1开始,以1/1结尾,其它数自左至右将所有的真分数按增加顺序排列;第n行是由所有分母小于或等于n的真分数组成,我们称为n阶法雷级数。如下原创 2011-09-01 17:08:25 · 681 阅读 · 0 评论 -
poj 2773(欧拉函数)
这个题的后台数据好像有点少。。。预处理之后居然比不预处理还慢。。。。。这里用到几个了定理1.区间[1, m - 1]中有eul[m]个数与m互质,则在区间[n*m + 1, (n + 1) * m]中必然也有eul[m]个数与m互质2.若n是质数p的k次幂,,因为除了原创 2011-09-01 13:27:47 · 514 阅读 · 0 评论 -
poj 2429(因子分解 再处理一下因子即可)
因子分解很简单 直接套用模版即可。。然后之后的处理,这里一个讲解不错。。。。http://blog.sina.com.cn/s/blog_69c3f0410100uac0.html 可以参考一下的。。。#include#include#include#incl原创 2011-08-31 09:06:49 · 3647 阅读 · 0 评论 -
poj 1811(素数测定以及因子分解)
写了好长时间。。。。。看了好长时间的算法导论。。。唉。。。#include#includeusing namespace std;long long p,ans;// 素数测试long long mod2(long long a,long long b,long原创 2011-08-28 16:29:01 · 594 阅读 · 0 评论 -
poj 2142
http://hi.baidu.com/5l2_/blog/item/a0381951b5738a1e367abef0.html 这个文章写的很好。。。我只是照办人家的。。。。TT 自己想不到的。。。。。大概意思 给定 a b k找到满足ax+by=k 的令|x|+|y|最小原创 2011-09-04 18:23:37 · 806 阅读 · 0 评论