蹦蹦萝卜 求思路

A了吗?

等等,这题好像不需要用倍增啊,直接除法不行吗?

你A了吗?

还没有,且慢

最新代码

额,全输出零

发出来

感觉怪怪的

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=1e9+7;
ll n,k,m,cnt,a[1000005],b[1000005];
int main(){
  scanf("%lld%lld",&n,&k);
  for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
  scanf("%lld",&m);
  int now=1;
  while(cnt==0||now!=1){
    b[++cnt]=(b[cnt-1]+a[now])%mod;
    now=(now+k)%n+1;
  }
  ll cycle=m/cnt;
  ll ans=(cycle*b[cnt]%mod+b[m%cnt])%mod;
  printf("%lld",ans);
  return 0;
}

cnt==0 删掉那不就进不了循环了吗?

那你把循环变成while(0)
然后,如果i==0,退出循环

while(0)是什么鬼?进都进不去

while(1)

A了吗

A了,谢谢

解决方案