
数论
Ripped
我那么浮躁却想要读懂你的生活
展开
-
【BZOJ 4522】【CQOI 2016】密钥破解
其实这道题目的核心就是把N分解质因数。 引用一个很玄学的算法:pollard_rho算法。 http://blog.youkuaiyun.com/maxichu/article/details/45459533 代码如下。玄学之处有两个,一个是每次平方加上一个常数(这里是seed),第二个是每次达到上限k就重新开始,并且k的范围乘2。 分解完质因数就是解一个类似于ax+by=1的方程,套一下裴蜀和扩原创 2017-03-06 14:52:55 · 711 阅读 · 0 评论 -
【POJ 1845】Sumdiv
首先可以把A质因数分解,然后用等比数列求和公式求出每个质因数可能的贡献。 现在问题来了,在模9901的情况下如何做除法。 一个显然的想法就是求出逆元,因为9901是一个质数,所以直接乘上逆元即可。 我一开始也是这么想的,但是疯狂WA啊。 后来网上找到了另一种方法:二分求等比数列和。大概的意思就是每次将这个等比数列分成两半,提出一个公因式,然后这个数列就缩短一半。如此递归,最后求解。这样做是对原创 2017-03-14 10:44:20 · 461 阅读 · 0 评论 -
【BZOJ 1406】【AHOI 2007】密码箱
设:x^2=kn+1 移项:(x+1)(x-1)=kn 令x+1=k1n1,x-1=k2n2,其中k1k2=k,n1n2=n 然后在n的因子中枚举n1,再枚举k1,判断一下是否存在k2,如果存在就是一个合法解,扔到set里面排序去重。#include<set> #include<cmath> #include<cstdio> #include<vector> #include<queue> #原创 2017-04-17 14:42:20 · 428 阅读 · 0 评论 -
【BZOJ 4459】【JSOI 2013】丢番图
1x+1y=1n\frac{1}{x} + \frac{1}{y} = \frac{1}{n} xy−xn−yn=0xy - xn - yn = 0 (x−n)(y−n)=n2(x-n)(y-n)=n^{2} 答案就是n2n^{2}的因子个数除以2上取整。 分解质因数就好了。#include<cmath> #include<cstdio> #include<vector> #include<原创 2017-04-17 15:29:54 · 422 阅读 · 0 评论 -
【BZOJ 1408】【NOI 2002】Robot
题目相当于重新定义了一下φ\varphi和μ\mu,只不过和原定义有一些区别。 首先可以求出第一问和第二问,这等价于在所有奇质因子中取奇数个(偶数个)互不相同的奇质因子的方案数,直接dp即可,注意φ\varphi函数是积性函数,直接乘起来即可。 第三问实际上就是所有方案的数量减去前两种方案,同样也可以dp直接求解。但是注意由于φ\varphi不是完全积性函数,所以当一个质因子是次数是一次时乘上的原创 2017-05-05 07:39:41 · 549 阅读 · 0 评论 -
Codeforces 1154G
给你n个数,找到两两lcm的最小值。 果然脑子题还是做不来。。。 枚举gcd,找到最小的两个能被这个gcd整除的数,就是这个gcd对应的答案(如果换成其他数字答案一定更大) 对于所有的gcd找到一个最小值就好了 #include<iostream> #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; long long...原创 2019-04-28 13:55:25 · 281 阅读 · 0 评论 -
Codeforces 1152C
求最小的 kkk 使得 lcm(a+k,b+k)lcm(a+k,b+k)lcm(a+k,b+k) 最小。 lcm(a+k,b+k)=(a+k)(b+k)gcd(a+k,b+k)=(a+k)(b+k)gcd(a+k,a−b)lcm(a+k,b+k)=\frac{(a+k)(b+k)}{gcd(a+k,b+k)}=\frac{(a+k)(b+k)}{gcd(a+k,a-b)}lcm(a+k,b+k)=...原创 2019-05-06 11:07:28 · 208 阅读 · 0 评论