【題意】已知\(n,a,b,c\),求
\[\begin
f_(a,b,c,n)&=\sum_^n\lfloor\dfrac\rfloor\\
f_(a,b,c,n)&=\sum_^n\lfloor\dfrac\rfloor^2\\
f_(a,b,c,n)&=\sum_^n\lfloor\dfrac\rfloor*i\\
\end
\]【預備】
設\(m=\lfloor\dfrac\rfloor,\ t_=\lfloor\dfrac\rfloor,\ t_=\lfloor\dfrac\rfloor\)。
定義\([\text]\)為真值表示式。
簡單的引理,當\(a,b,c\in z\)時
【限界】a=0時直接計算。
【式一】對原式變形
\[f_(a,b,c,n)
=\sum_^nt_\times i+t_+\lfloor\dfrac\rfloor\\
=t_\times\dfrac+t_\times(n+1)+ f_(a\bmod c,b\bmod c,c,n)
\]當\(t1=t2=0\)即\(a且\(b時,
\[f_(a,b,c,n)=
\sum_^n\sum_^m [j\le\dfrac]
=\sum_^n\sum_^m [j\le\lfloor\dfrac\rfloor]\\
=\sum_^m\sum_^n[j\le\lfloor\dfrac\rfloor]
=\sum_^m\sum_^n[cj-b\le ai]
=\sum_^m\sum_^n[cj-b-1< ai]\\
=\sum_^m\sum_^n[\lfloor\dfrac\rfloor< i]
=\sum_^m(n-\lfloor\dfrac\rfloor)\\
=mn-\sum_^m\lfloor\dfrac\rfloor
=mn-\sum_^\lfloor\dfrac\rfloor\\
=mn-f_(c,c-b-1,a,m-1)
\]【式二】對原式變形
\[f_(a,b,c,n)
=\sum_^n(t_\times i+t_+\lfloor\dfrac\rfloor)^2\\
=\sum_^n \begin
(t_\times i)^2+t_^2+\lfloor\dfrac\rfloor^2\\
+2t_t_*i\\
+2t_i\lfloor\dfrac\rfloor\\
+2t_\lfloor\dfrac\rfloor
\end\\
=\begin
t_^2\sum_^ni^2+t_^2*(n+1)+f_(a\bmod c,b\bmod c,c,n)\\
+2t_t_\sum_^n i\\
+2t_f_(a\bmod c,b \bmod c,c,n)\\
+2t_f_(a\bmod c,b \bmod c,c,n)
\end\\
\]當\(t1=t2=0\)即\(a且\(b時,
\[f_(a,b,c,d)=
\sum_^n\lfloor\dfrac\rfloor
=\sum_^n\sum_^m\sum_^m[\lfloor\dfrac\rfloor< i\text\lfloor\dfrac\rfloor< i]\\
=\sum_^n\sum_^m\sum_^m [\max(\lfloor\dfrac\rfloor,\lfloor\dfrac\rfloor)< i]\\
=\sum_^m\sum_^m \sum_^n[\max(\lfloor\dfrac\rfloor,\lfloor\dfrac\rfloor)< i]\\
=\sum_^m\sum_^m n-\max(\lfloor\dfrac\rfloor,\lfloor\dfrac\rfloor)\\
=nm^2-\sum_^m\sum_^m\max(\lfloor\dfrac\rfloor,\lfloor\dfrac\rfloor)\\
=nm^2-2*\sum_^m\lfloor\dfrac\rfloor*(j-1)-\sum_^m \lfloor\dfrac\rfloor\\
=nm^2-\sum_^ \lfloor\dfrac\rfloor*j-\sum_^ \lfloor\dfrac\rfloor\\
=nm^2-f_(c,c-b-1,a,m-1)-2*f_(c,c-b-1,a,m-1)
\]【式三】對原式變形
\[f_(a,b,c,n)=\sum_^n\lfloor\dfrac\rfloor*i
=\sum_^n (t_\times i+t_+\lfloor\dfrac\rfloor)*i\\
=\sum_^n t_\times i^2+t_\times i+\lfloor\dfrac\rfloor\times i\\
=t_\sum_^ni^2+t_\sum_^ni+f_(a\bmod c,b\bmod c,c,n)
\]當\(t1=t2=0\)即\(a且\(b時,定義\(p(j)=\lfloor\dfrac\rfloor\)。
\[f3(a,b,c,d)
=\sum_^n\sum_^m [j\le\lfloor\dfrac\rfloor]*i
=\sum_^m\sum_^n[\lfloor\dfrac\rfloor< i]*i\\
=\sum_^m\sum_^ni
=\sum_^m \dfrac(p(j)+1+n)(n-p(j))\\
=\sum_^m \dfrac(n\times p(j)-p^2(j)+n-p(j)+n^2-n\times p(j))\\
=\sum_^m \dfrac(-p^2(j)+n-p(j)+n^2)\\
=\dfrac(c,c-b-1,a,m-1)-f_(c,c-b-1,a,m-1)+nm+n^2m}
\]【時間複雜度】如果每個都單獨搜尋的話,大概因該會炸吧。。考慮到三個函式的遞迴模式都很**,乾脆用乙個結構體存下三個值。再參考第一題的分析,狀態數目是\(\log\)級別的。
#include #define ll long long
using namespace std;
const ll mod=998244353;
const ll i2=499122177;
const ll i6=166374059;
inline ll s1(ll n)
inline ll s2(ll n)
struct node else
} int main()
return 0;
}
P5170 模板 類歐幾里得演算法
對於類歐幾里得演算法,本質上可以理解為一條直線下的整點個數,是乙個矩形區域。然後將整數部分提出,就可以使得這個直線斜率較小,那麼我們就可以轉化為上方三角形部分,然後就又可以減小斜率了。然後對於不同型別的式子我們都可以對下方的整點定義貢獻,然後交換列舉順序之後,就是討論每類整點的貢獻,然後就可以將問題...
類歐幾里得演算法
比較快速地算出下面的式子 f n,a,b,c,k 1,k 2 sum limits n x lfloor frac rfloor 不妨假設現在 a geq c 或 b geq c 那麼 sum limits n x lfloor frac rfloor sum limits n x lfloor f...
類歐幾里得演算法
這個演算法用於求一條直線下整點個數,我們定義 f a,b,c,n sum lfloor frac rfloor 其他幾個乘係數的擴充套件不想學了tat a ge c 或 b ge c 當 a ge c 或 b ge c 時,我們考慮把分子對 c 的商和餘數分別提出來,那麼有 begin f a,b,...