前言
每次看了很快就忘了,干脆写一篇博客,来加深记忆。
定义
设
f(a,b,c,n)=∑i=0n⌊ai+bc⌋
g(a,b,c,n)=∑i=0ni⌊ai+bc⌋
g(a,b,c,n)=∑i=0n⌊ai+bc⌋2
m=⌊an+bc⌋
一、f(a,b,c,n)
当a>=c时,
=f(a%c,b,c,n)+⌊ac⌋∗n(n+1)/2
当b>=c时,
=f(a,b%c,c,n)+⌊bc⌋∗(n+1)
然后
=∑i=0n⌊ai+bc⌋
我们将 ai+bc 当作一条以i为自变量的直线,
于是原式就等于这个直角梯形内的整点个数,
=∑i=0n∑j=1m[⌊ai+bc⌋>=j]
=∑i=0n∑j=0m−1[⌊ai+bc⌋>=j+1]
=∑i=0n∑j=0m−1[ai+b>=jc+c]
=∑i=0n∑j=0m−1[ai+b>jc+c−1]
=∑i=0n∑j=0m−1[ai>jc+c−b−1]
=∑i=0n∑j=0m−1[i>⌊jc+c−b−1a⌋]
=∑j=0m−1∑i=0n[i>⌊jc+c−b−1a⌋]
=∑j=0m−1(n−∑i=0n[i<=⌊jc+c−b−1a⌋])
=nm−f(c,c−b−1,a,m−1)
时间复杂度类似与扩展欧几里得。
二、g(a,b,c,n)
//坑