上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 30 下一页
摘要: 题意: 求A^B的所有正因子的和,最后模9901的结果。思路:若对一个数n进行素数分解,n=p1^a1*p2^a2*p3^a3*...*pk^ak那么n的所有正因子之和sum=(1+p1+...+p1^a1)*(1+p2+...+p2^a2)*...*(1+pk+...+pk^ak)然后可以用等比数列求和公式(pk^(ak+1)-1)/(pk-1)求每项的和,再累乘。用等比数列求1+pk+...+pk^ak时候要注意几点:1.这里有除法,所以模的时候要将除以分母转化成乘以分母的逆元a = (b/c) ==> a%m = b*c^(m-2)%m ( m为素数 )证明: b = a * c根 阅读全文
posted @ 2014-02-26 19:33 辰曦~文若 阅读(635) 评论(0) 推荐(0)
摘要: 题意:给n和k,求组合C(n,k)的因子个数。这道题,若一开始先预处理出C[i][j]的大小,再按普通方法枚举2~sqrt(C[i][j])来求解对应的因子个数,会TLE。所以得用别的方法。在说方法前,先说一个n!的性质:n!的素因子分解中的素数p的个数为n/p+n/(p^2)+...+n/(p^k)+...《ACM-ICPC程序设计系列 数论及应用》上的方法,200+ms:首先先求解435以内的素因子。然后预处理出j!中每个素因子的个数,公式如下:num[j][i]=j/prime[i]+num[j/prime[i]][i];设n!中素因子p的个数为:a=n/p+n/(p^2)+...+n/ 阅读全文
posted @ 2014-02-26 16:03 辰曦~文若 阅读(599) 评论(0) 推荐(1)
摘要: 该题没思路,参考了网上各种题解。。。。注意到凡是那种11111..... 22222..... 33333.....之类的序列都可用这个式子来表示:k*(10^x-1)/9进而简化:8 * (10^x-1)/9=L * k (k是一个整数)8*(10^x-1)=9L*kd=gcd(9L,8)=gcd(8,L)8*(10^x-1)/d=9L/d*k令p=8/d q=9L/d p*(10^x-1)=q*k因为p,q互质,所以q|(10^x-1),即10^x-1=0(mod q),也就是10^x=1(mod 9*L/d)由欧拉定理可知,当q与10互质的时候,10^(φ(q))=1 (mod ... 阅读全文
posted @ 2014-02-26 13:56 辰曦~文若 阅读(1442) 评论(0) 推荐(1)
摘要: 题意:给出一个N,若N为素数,输出Prime。若为合数,输出最小的素因子。思路:Pollard rho大整数分解,模板题#include #include #include #include #include #include using namespace std;long long n;long long minf;long long multi(long long a,long long b,long long mod){ a=a%n; long long ret=0; while(b){ if(b&1){ //ret=(ret+a)... 阅读全文
posted @ 2014-02-25 19:41 辰曦~文若 阅读(287) 评论(0) 推荐(0)
摘要: 题意:给出a和b的gcd和lcm,让你求a和b。按升序输出a和b。若有多组满足条件的a和b,那么输出a+b最小的。思路:lcm=a*b/gcd lcm/gcd=a/gcd*b/gcd 可知a/gcd与b/gcd互质,由此我们可以先用Pollard_rho法对lcm/gcd进行整数分解, 然后对其因子进行深搜找出符合条件的两个互质的因数,然后再都乘以gcd即为输出答案。#include #include #include #include #include #include using namespace std;const int maxn=100;long... 阅读全文
posted @ 2014-02-25 19:36 辰曦~文若 阅读(543) 评论(0) 推荐(0)
摘要: 设不定方程:x^2+y^2=z^2若正整数三元组(x,y,z)满足上述方程,则称为毕达哥拉斯三元组。若gcd(x,y,z)=1,则称为本原的毕达哥拉斯三元组。定理:正整数x,y,z构成一个本原的毕达哥拉斯三元组且y为偶数,当且仅当存在互素的正整数m,n(m>n),其中m,n的奇偶性不同,并且满足 x=m^2-n^2,y=2*m*n, z=m^2+n^2本题目让你求的是,在n范围内(x,y,z#include #include #include #include using namespace std;const int maxn=1000;int n;int vis[1000000+.. 阅读全文
posted @ 2014-02-20 19:55 辰曦~文若 阅读(835) 评论(0) 推荐(0)
摘要: 这题实际解不定方程:ax+by=c只不过题目要求我们解出的x和y 满足|x|+|y|最小,当|x|+|y|相同时,满足|ax|+|by|最小。首先用扩展欧几里德,很容易得出x和y的解。一开始不妨令a>b,若aa1)首先由不定方程ax+by=c,a>0,b>0,c>0可知,x和y只有下述三种情况:x>0,y0; x>0,y>0;那么对t分类讨论,得出:1.tmax(-c1/a1,c2/a2),z=(a1+a2)t+c1-c2,单调增这样,我们知道当z取最小值时,t=c2/a2=y0/(a/d)=y0*d/a 附近接着只要在t附近几个比较一下取最小值即可。 阅读全文
posted @ 2014-02-20 11:48 辰曦~文若 阅读(564) 评论(0) 推荐(0)
摘要: 在POJ上有译文(原文右上角),选择语言:简体中文求解同余方程组:x=ai(mod mi) i=1~r, m1,m2,...,mr互质利用中国剩余定理令M=m1*m2*...*mr,Mi=M/mi因为mi两两互质,所以(Mi,mi)=1令Mi*yi=1(mod mi)的解为yi,即Mi模mi的逆元则方程的解为:(a1*M1*y1+a2*M2*y2+...+ar*Mr*yr)%M方法一:用扩展欧几里德求逆元#include #include #include using namespace std;const int M=21252;int a[3],m[3]={23,28,33};int s. 阅读全文
posted @ 2014-02-19 17:26 辰曦~文若 阅读(206) 评论(0) 推荐(0)
摘要: 题意:求S=(A+A^2+A^3+...+A^k)%m的和方法一:二分求解S=A+A^2+...+A^k若k为奇数:S=(A+A^2+...+A^(k/2))+A^(k/2)*(A+A^2+...+A^(k/2))+A^k若k为偶数:S=(A+A^2+...+A^(k/2))+A^(k/2)*(A+A^2+...+A^(k/2))也可以这么二分(其实和前面的差不多):S(2n)=A+A^2+...+A^2n=(1+A^n)*(A+A^2+...+A^n)=(1+A^n)*S(n)S(2n+1)=A+A^2+...+A^(2n+1)=A(1+A+..+A^2n)=A+(A+A^(n+1))*S( 阅读全文
posted @ 2014-02-19 14:30 辰曦~文若 阅读(245) 评论(0) 推荐(0)
摘要: 不理解Baby Step Giant Step算法,请戳:http://www.cnblogs.com/chenxiwenruo/p/3554885.html#include #include #include #include #define SIZE 99991/*POJ 3243AC求解同余方... 阅读全文
posted @ 2014-02-18 21:01 辰曦~文若 阅读(767) 评论(0) 推荐(0)
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 30 下一页