上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 38 下一页
摘要: 用了一点群论中的置换群的知识,仅是一点,找出循环节,取模即可。初次接触群论,等做完余下一点东西后就系统一点学习组合数学的内容#include #include #include #include using namespace std;int n;int chan[210];int partic[2... 阅读全文
posted @ 2014-09-17 11:28 chenjunjie1994 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 稍加分析后,你会发现,就是统计次数而已#include #include using namespace std;int a[110],b[110];int aa[30],bb[30];char cipher[110],m[110];int main(){ while(scanf("%s",ciph... 阅读全文
posted @ 2014-09-16 22:32 chenjunjie1994 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 水题一道,注意取模时不能为0#include #include #include #include #include using namespace std;char s[150];char ans1[150],ans2[150],ans3[150];int mark[150];int p1,p2,... 阅读全文
posted @ 2014-09-16 22:12 chenjunjie1994 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 第一道简单密码学的题,太水了,本不打算做,第一道,还是纪念一下。#include #include #include #include #include using namespace std;char trans[30]={'V','W','X','Y','Z','A','B','C','D','... 阅读全文
posted @ 2014-09-15 22:07 chenjunjie1994 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 看见别人的用的莫比乌斯来做,我看了好久也没明白,实在佩服,看到是组合数学的内容,只好先留着,待我学了组合数学后再用莫比乌斯来写。求GCD(X,Y)=K.其实即是在[1,X/K]和[1,Y/K]的区间内求GCD(X,Y)=1的对数。这样,假设X/K#include #include #include ... 阅读全文
posted @ 2014-09-14 22:03 chenjunjie1994 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 模拟题#include #include #include using namespace std;int p[1000000];int main(){ int n; while(scanf("%d",&n)!=EOF){ memset(p,0,sizeof(p)); int i; for(i... 阅读全文
posted @ 2014-09-14 21:56 chenjunjie1994 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 由算术基本定理N=p1^e1*p2^e2....ps^es,可知一个素的因子个数为(e1+1)*(e2+1)*...*(es+1)。而N的一人因子必定也有n=p1^k1*p2^k2。。。。*ps^ks的形式。因子个数形式同上。而事实上,即是从ei中选取其中一些来充当k1。那么,所有的因子的个数之和必... 阅读全文
posted @ 2014-09-13 21:32 chenjunjie1994 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 利用x#include #include #include #include #define LL __int64using namespace std;const LL N=10000005;bool isprime[N];int pme[N],np;void initial(){ memset(... 阅读全文
posted @ 2014-09-13 20:41 chenjunjie1994 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 可以容易得知,F=sum(p*phi(n/p))。思路就断在这里了。。。看过别人的,才知道如下:由于gcd(i,n*m)=gcd(i,m)*gcd(i,n),所以gcd为积性函数。而积性函数之和为积性函数。所以F=sum(gcd(i,n))为积性函数。n=p1^k1*p2^k2....所以f(p1^... 阅读全文
posted @ 2014-09-13 15:30 chenjunjie1994 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 和上题一样,不过,更简单了#include #include #include #include #include using namespace std;const int MOD=29;int quick(int a,int b,int m){ int res=1; while(b){ if(... 阅读全文
posted @ 2014-09-13 10:53 chenjunjie1994 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 此题需要注意的一个细节时,若MOD|P或MOD|(P-1),此时不能应用费马小定理求逆元的方法。这时,就要回到求解因子和的初始公式是,即那个等比数列相加的公式。这时,若MOD|P,即,余为1,若MOD|(P-1),即为K个1之和。如此,可求了。#include #include #include #... 阅读全文
posted @ 2014-09-13 09:46 chenjunjie1994 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 此题A得艰难,应该是有很多组数据吧,使得容易超时。直接求出组合数是不可能的,因而,只能把各个数都计算其各素因子个数,再计算即可。而直接计算,必定是要超时的,所以,只好先预处理所有结果,再输出了。首先筛选素数,分解0~440的素因子。然后,Cnk=(n*(n-1)*(n-2)*...(n-k+1))/... 阅读全文
posted @ 2014-09-12 21:24 chenjunjie1994 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 此题的主要还是如何把小数化作分数来解答。设p/q。对于二进制(三进制,四进制一样),若p>q便商1,取mod,p*2-->p,然后再作p/q,若p#include #include #include #define LL __int64using namespace std;LL fac[10000... 阅读全文
posted @ 2014-09-12 19:39 chenjunjie1994 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 这里面的一个转换的小技巧很重要,把888...8转换成(10^x-1)/9*8。神来之笔,佩服。这样有(10^x-1)/9*8=L*p得10^x-1=L*p*9/8,设m=9*L/gcd(L,8)。这一步如何想到的呢?其实是为了使m与10互质而做的。因为这样必有m*p1=10^x-1。使得同余方程1... 阅读全文
posted @ 2014-09-12 11:02 chenjunjie1994 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 所谓可见点,即是(a,b)=1的点,使用欧拉函数,求出比之小的与之互质的个数即可,又对称,所以乘2,最后要+1.#include #include #include #include using namespace std;const int N=1050;int phi[N];void initi... 阅读全文
posted @ 2014-09-10 15:05 chenjunjie1994 阅读(191) 评论(0) 推荐(0) 编辑
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 38 下一页