题目连接:
http://www.codeforces.com/contest/670/problem/B
Description
In late autumn evening n robots gathered in the cheerful company of friends. Each robot has a unique identifier — an integer from 1 to 109.
At some moment, robots decided to play the game "Snowball". Below there are the rules of this game. First, all robots stand in a row. Then the first robot says his identifier. After that the second robot says the identifier of the first robot and then says his own identifier. Then the third robot says the identifier of the first robot, then says the identifier of the second robot and after that says his own. This process continues from left to right until the n-th robot says his identifier.
Your task is to determine the k-th identifier to be pronounced.
Input
The first line contains two positive integers n and k (1 ≤ n ≤ 100 000, 1 ≤ k ≤ min(2·109, n·(n + 1) / 2).
The second line contains the sequence id1, id2, ..., idn (1 ≤ idi ≤ 109) — identifiers of roborts. It is guaranteed that all identifiers are different.
Output
Print the k-th pronounced identifier (assume that the numeration starts from 1).
Sample Input
2 2
1 2
Sample Output
1
题意
每个人都有自己的名字
现在在玩一个游戏,叫做叫名字
每个人都会叫前面人的名字和自己的名字
现在问你第k个叫的名字是啥
题解:
其实每个人叫了多少,就是一个前缀和
统计一下,然后直接输出就好了
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
int n,m,a[maxn],sum;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
{
sum+=i;
if(sum>=m)
{
sum=i-(sum-m);
cout<<a[sum]<<endl;
break;
}
}
return 0;
}