0 pts 全WA求调
查看原帖
0 pts 全WA求调
1285691
yinbe2楼主2024/10/1 11:50
#include<iostream>
#include<map>
#include<vector>
#define int long long
using namespace std;
int n;
long long k,x,sum,cnt,a[200005],oth,cnt_oth,c[200005];
map<long long,long long>mp;
vector<long long>xunhuan;
signed main()
{
	scanf("%lld%lld",&n,&k);
	for(int i=0;i<n;i++)
	{
		scanf("%lld",&a[i]);
	}
	xunhuan.push_back(0);
	while(1)
	{
		if(mp.find(a[x%n])!=mp.end())
		{
			break;
		}
		mp[a[x%n]]=cnt;
		x+=a[x%n];
		cnt++;
		c[cnt]=x;
		xunhuan.push_back(x%n);
	}
	if(cnt>=k)
	{
		printf("%lld",c[k]);
	}
	else
	{
		long long xunhuan_len=0;;
		for(int i=xunhuan.size()-1;i>=0;i--)
		{
			xunhuan_len++;
			if(x%n==xunhuan[i])
			{
				break;
			}
		}
		long long sum_xunhuan=c[cnt]-c[cnt-xunhuan_len];
		k-=cnt-xunhuan_len;
		printf("%lld",(k/cnt)*sum_xunhuan+c[cnt-xunhuan_len+1+k%cnt]-c[cnt-xunhuan_len]+c[cnt-xunhuan_len]);
	}
	return 0;
}
2024/10/1 11:50
加载中...