题意:
给你n个数,然后机器人会开始不断重复报数,例如n=4时会报到“ a[0],a[0],a[1],a[0],a[1],a[2],a[0],a[1],a[2],a[3] ”,问你报到第k个是多少
思路:
直接暴力即可,因为最多也只是减n次,注意下longlong和特判就好了
错误及反思:
本来想优雅的写个二分,死活调不对,果然二分最烦了。。。
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=100100;
int arr[maxn],n;
long long k;
int main(){
scanf("%d%I64d",&n,&k);
for(int i=0;i<n;i++)
scanf("%d",&arr[i]);
long long now=1;
while(k>=now)
{
k-=now;
now++;
}
if(k==0) printf("%d\n",arr[now-2]);
else
printf("%d\n",arr[k-1]);
}