显然$n>b$时F是线性函数。经过尝试可以发现$n\le b$时F是分段线性的函数,每段的斜率都为1,且自变量的跨度为a,相邻的段之间满足
$$F(n+a)=F(n)+3(a-c),$$
因此事实上只需要作两次等差数列求和即可,结果是$291504964$。
a,b,c,m=21**7, 7**21,12**7, 10**9
s=lambda x,d,n:n*(x+x+(n-1)*d)/2
q,r=(b+1)/a,(b+1)%a
print (s(s(b+4*(a-c),-1,a),a*3*(a-c),q)+s(b+4*(a-c)+q*3*(a-c),-1,r))%m
|