摘要:
思路:用拓展欧几里得算法可以得出原方程的一个解。然后就可以根据这个解判断在所给的区间里有几个解。由ax+by+c=0有ax+by=-c,两边取模b得到ax+by≡-c(modb)推出ax≡-c(modb)模线性方程有解当且仅当gcd(a,b)|-c,有解的情况下方程对模-c有d个不同的解,d=gcd(a,b)根据拓展欧几里得算法可以算出x0,y0使得d=a*x0+b*y0则x=x0*(-c/d),y=y0*(-c/d)为原方程ax+by+c=0的一个解则方程的所有解为x=x0*(-c/d)+i*(b/d),y=y0*(-c/d)-i*(a/d)计算所有的i使得解在所给区间内的个数即可。代码如下 阅读全文
posted @ 2013-08-28 16:50
_随心所欲_
阅读(240)
评论(0)
推荐(0)
摘要:
思路:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0求约数最多的数如果求约数的个数 756=2^2*3^3*7^1(2+1)*(3+1)*(1+1)=24基于上述结论,给出算法:按照质因数大小递增顺序搜索每一个质因子,枚举每一个质因子为了剪枝:性质一:一个反素数的质因子必然是从2开始连续的质数.因为最多只需要10个素数构造:2,3,5,7,11,13,17,19,23,29性质二:p=2^t1*3^t2*5^t3*7^t4.....必然t1>=t2>=t3>=....链接:http://acm.zju.edu. 阅读全文
posted @ 2013-08-28 15:40
_随心所欲_
阅读(239)
评论(0)
推荐(0)
摘要:
思路:这题有个结论也可以自己归纳:对于给定的n,其约数用pi表示T(n)=T(p1)T(p2)……T(pn)T(n')其中T(n')是这个式子所独有的也就是T(n')=(x^n-1)/T(p1)/T(p2)……/T(pn)代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define MAX 1102 8 using namespace std; 9 struct pol 10 { 11 int bit[MAX],len; 12 void init(){mems... 阅读全文
posted @ 2013-08-28 13:59
_随心所欲_
阅读(399)
评论(0)
推荐(0)

浙公网安备 33010602011771号