(You can not see the face of questions, plus late plane title)
Ideas:
Suma = (a1 + a2 + ... + s)
sumf=(f1+f2+。。。+f3)
①n<=k,ans=a1+a2+。。。+an;
②n<=2k,ans=suma+f1+f2+。。。+f(n-k);
③n>2k,ans=suma+((n-k)/k)*sumf+( f1+f2+。。。+f( (n-k)%k ) ).
Note that the line modulo
AC Code:
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=1e6+7; 5 ll mod=1e9+7; 6 ll a[maxn],f[maxn]; 7 int main() 8 { 9 int t; 10 scanf("%d",&t); 11 while(t--){ 12 int k; 13 ll n,suma=0,sumf=0,k2; 14 scanf("%d",&k); 15 k2=ll(k); 16 scanf("%lld",&n); 17 for(int i=1;i<=k;++i) 18 scanf("%lld",&a[i]),suma=(suma+a[i])%mod; 19 for(int i=1;i<=k;++i) 20 scanf("%lld",&f[i]),sumf=(sumf+f[i])%mod; 21 ll ans=0; 22 if(k2>=n){ 23 for(int i=1;i<=int(n);++i) 24 ans=(ans+a[i])%mod; 25 printf("%lld\n",ans%mod); 26 } 27 else{ 28 ans=suma%mod; 29 ll nu=((n-k2)/k2); 30 int len=n-nu*k2-k2; 31 now% = v; 32 ans = (now sumf * + ANS)% v; 33 for ( int i = 1 ; i <= len; ++ i) 34 ans = (ANS + F [i])% v; 35 printf ( " % lld \ n " , ans% MOD); 36 } 37 } 38 return 0 ; 39 } 40 / * 41 2 42 2 100000000000000000 43 6 5 5 5 44 * /