(あなたが質問の顔、プラス後半平面のタイトルを見ることができません)
アイデア:
須磨=(A1 + A2 + ... + S)
SUMF =(F1 + F2 + ... + F3)
①n<= K、ANS = A1 + A2 + ... +。
②n<= 2K、ANS =スマ+ F1 + F2 + ... + F(NK)。
③n> 2K、ANS =スマ+((NK)/ K)* SUMF +(F1 + F2 + ... + F((NK)%のK))。
なお、ライン剰余
ACコード:
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 typedefの長い 長いLL。 4 のconst int型 MAXN = 1E6 + 7 。 5 LL MOD = 1E9 + 7 。 6 ; [MAXN]、[MAXN] F LL 7 INT ()メイン 8 { 9 int型のT。 10 のscanf(" %dの"、&T)。 11 一方(t-- ){ 12 のint 、K。 13 のLL N、スマ= 0、SUMF = 0 、K2。 14 のscanf(" %dの"、&K)。 15 K2 = 11(K); 16 のscanf(" %のLLD "、&N) 17 のために(int型 i = 1 ; iが= Kを<; ++ i)が 18 のscanf(" %のLLD "、&[i])と、スマ=(スマ+ [I])%のMOD。 19 のために(int型 i = 1 ; iが= Kを<++ i)が 20 のscanf(" %のLLD "、&F [i])と、SUMF =(SUMF + F [i])と%MOD。 21 LL ANS = 0 。 22 であれば(K2> = {N) 23 のための(int型 I = 1 ; I <= INT(N); ++ i)は 24 のANS =(ANS + [I])%MOD。 25 のprintf(" %LLDする\ n "、ANS%のMOD)。 26 } 27 他{ 28の ANS =スマ%MOD。 29 LL NU =((N-K2)/ K2)。 30 int型 LEN = N-NU * k2-K2; 31 今や%= V。 32の ANS =(今SUMF * + ANS)%のV。 33 のために(int型 i = 1 ; iがLEN = <; ++ i)が 34 のANS =(ANS + F [i])と%のV。 35 のprintf(" %LLDする\ n "、ANS%MOD)。 36 } 37 } 38 リターン 0 。 39 } 40 / * 41 2 42 2 100000000000000000 43 6 5 5 5 44 * /