摘要:多项式乘法优化算法:设有如下两个多项式:把它们的系数分别做成向量X=[x0,x1,x2,x3,......]的形式,得 F=[2,3,1] G=[5,2,0]那么根据卷积公式可以求得向量F和G的卷积S=[10,19,11,2]而由多项式乘法可算出各项系数和上面的卷积结果正好一一对应。所以说,多项...
阅读全文
摘要:Fast Fourier Transform首先介绍几个概念:1.卷积:设f(x)和g(x)是两个可积函数,令那么h(x)就是f(x)和g(x)的卷积 但更常用的是离散的情况: 卷积的意义:如下图 首先将两个函数都用T来表示。 对其中一个函数做水平翻转:g(T)→g(...
阅读全文
摘要:题目链接:http://4.gdutcode.sinaapp.com/contest.php?cid=1021F题意:给出n和m,要求满足gcd(x,y)=n && lcm(x,y)=m的pair(x,y)的个数sol:先YY一下:设 gcd(x,y)=n,lcm(x,y)=m那么有x=a*n,y...
阅读全文
摘要:题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70017#problem/H题意:求满足1的数目一开始我是这么想的:既然lcm(i,j)=n,那么n=x*i=y*j,且x和y一定互质。若i和j固定了,那么x和y也固定了。那么问题...
阅读全文
摘要:本来很水的,答案就是(2^n)-2,但是写坑了QAQ因为原题要求答案要mod P,一开始我是这么干的: LL ans=pow_mod(2,N,P); ans=(ans-2)%P; if (N==1) ans=1%P; printf("%I6...
阅读全文
摘要:维护前缀和sum[i]=a[0]-a[1]+a[2]-a[3]+…+(-1)^i*a[i]枚举结尾i,然后在hash表中查询是否存在sum[i]-K的值。如果当前i为奇数,则将sum[i]插入到hash表中。上面考虑的是从i为偶数为开头的情况。然后再考虑以奇数开头的情况,按照上述方法再做一次即可。不...
阅读全文
摘要:这题满满的黑科技orz题意:给出L,要求求出最小的全部由8组成的数(eg: 8,88,888,8888,88888,.......),且这个数是L的倍数sol:全部由8组成的数可以这样表示:((10^x)-1)*(8/9)那么有m=((10^x)-1)*(8/9)=k*L,answer即满足条件的最...
阅读全文
摘要:题意:求满足条件GCD(N,M) = N XOR M的M的个数sol:和uva那题挺像的。若gcd(a,b)=a xor b=c,则b=a-c暴力枚举N的所有约数K,令M=NxorK,再判断gcd(N,M)是不是等于K。注意枚举约数时传统方法是O(N)的,会完蛋有个O(sqrt(N))的方法:注意一...
阅读全文
摘要:题意:给出N,1 2 #include 3 #define LL long long 4 #define MX 30000005 5 6 int N,T; 7 LL S[MX],f[MX]; 8 9 int main()10 {11 memset(f,0,sizeof(f));12 ...
阅读全文
摘要:题意:给出N,求所有满足i gcd(x/i,n/i)=1 -> x/i与n/i互质 -> 满足该条件的x/i有phi(n/i)个那么再用欧拉函数就可以求出每一个f(n)啦~如果找n的每一个约数i会有点慢,可以枚举i,令n=2*i,3*i,........(n是i的所有倍数且小于MAXN) for (...
阅读全文