この問題は階差数列を問います。

問題の条件は、AA が階差数列となることがわかります。さらに A1A_1 が与えられているので、AA は一意に定まります。
これらから数列 AA の一般項が Ai=A1+k=1i1BkA_i=A_1+\displaystyle\sum^{i-1}_{k=1}B_k と求めることができます。これは一般に知られていますが、実験してみてもわかります。

さて、問題なのは A1+A2+A3+...+ANA_1+A_2+A_3+...+A_N を求めることです。
上の一般項を使って愚直に求めてもいいですが、次のように変形することで解くことも可能です。

  • k=1NAk=(A1+j=121Bj)+(A1+j=131Bj)+(A1+j=141Bj)+...+(A1+j=1N1Bj)=NA1+i=2Nj=1i1Bj\displaystyle\sum^{N}_{k=1} A_k=(A_1+\displaystyle\sum^{2-1}_{j=1}B_j)+(A_1+\displaystyle\sum^{3-1}_{j=1}B_j)+(A_1+\displaystyle\sum^{4-1}_{j=1}B_j)+...+(A_1+\displaystyle\sum^{N-1}_{j=1}B_j)=NA_1+\displaystyle\sum^{N}_{i=2}\displaystyle\sum^{i-1}_{j=1}B_j

よって NA1+i=2Nj=1i1Bj=KNA_1+\displaystyle\sum^{N}_{i=2}\displaystyle\sum^{i-1}_{j=1}B_j=K という等式が成り立ち、これから A1=Ki=2Nj=1i1BjNA_1=\cfrac{K-\displaystyle\sum^{N}_{i=2}\displaystyle\sum^{i-1}_{j=1}B_j}{N} の式を得ることができます。
AA は整数列といった条件から A1A_1 の値の範囲を考えず、次の問題に帰着することができます。

  • Ki=2Nj=1i1BjK-\displaystyle\sum^{N}_{i=2}\displaystyle\sum^{i-1}_{j=1}B_jNN の倍数であるか判定せよ

これなら簡単な条件分岐で実装することができます。
したがって i=2Nj=1i1Bj\displaystyle\sum^{N}_{i=2}\displaystyle\sum^{i-1}_{j=1}B_j の値を求めるのに O(N)O(N) だけかかる※1ので、全体で O(N)O(N) でこの問題を正解することができます。

余談ですがすべての条件を満たす数列 AAA1A_1 の式からただ 11 つに定まることがわかります。
実際に証明することもできますが、ここでは省略します。

※1 i=2Nj=1i1Bj\displaystyle\sum^{N}_{i=2}\displaystyle\sum^{i-1}_{j=1}B_j は一見 O(N2)O(N^2) で求めると見えますが、

  • i=2Nj=1i1Bj=B1+(B1+B2)+(B1+B2+B3)+...+(B1+B2+...+BN1)\displaystyle\sum^{N}_{i=2}\displaystyle\sum^{i-1}_{j=1}B_j=B_1+(B_1+B_2)+(B_1+B_2+B_3)+...+(B_1+B_2+...+B_{N-1})

と見ることができます。つまり数列 B=(B1,B2,...,BN1)=(B1,B1+B2,B1+B2+B3,...,B1+B2+...+BN1)B'=(B_1',B_2',...,B_{N-1}')=(B_1,B_1+B_2,B_1+B_2+B_3,...,B_1+B_2+...+B_{N-1}) とすると、BB' の一般項は

  • B1=B1, Bn=Bn1+BnB'_1=B_1,\ B_n'=B_{n-1}'+B_n

と表すことができます(便宜上、漸化式の形で表しています)。
そうして i=1N1Bi=i=2Nj=1i1Bj\displaystyle\sum^{N-1}_{i=1} B_i'=\displaystyle\sum^{N}_{i=2}\displaystyle\sum^{i-1}_{j=1}B_j であるので、上の漸化式を用いて計算することで O(N)O(N) で実装することができます。

  • C++
  • Python