[2016-05-06][codeforces][670B - Game of Robots]

  • 时间:2016-05-06 10:09:35 星期五

  • 题目编号:[2016-05-06][codeforces][670B - Game of Robots]

  • 题目大意:给定n和k,和n个人的编号,从做到右,每个人一次报出前面的人的编号和自己的编号,问第k个喊出的编号是多少

  • 分析:

    • 暴力计算出k是第几个人,记为t,那么 第k个人喊的编号就是 kt×(t1)2
    • 直接不断减i ,i从1增加到 n,知道 k - i <= 0为止
  1. #include<cstdio>
  2. using namespace std;
  3. const int maxn = 1E5 + 10;
  4. int a[maxn];
  5. int main(){
  6. int n,m;
  7. scanf("%d%d",&n,&m);
  8. for(int i = 1 ; i <= n ; ++i){
  9. scanf("%d",&a[i]);
  10. }
  11. a[0] = a[n];
  12. for(int i = 1 ;m - i > 0; ++i){
  13. m -= i;
  14. }
  15. printf("%d\n",a[m]);
  16. }
  1. #include<cstdio>
  2. using namespace std;
  3. const int maxn = 1E5 + 10;
  4. int a[maxn];
  5. int main(){
  6. int n,m;
  7. scanf("%d%d",&n,&m);
  8. for(int i = 0 ; i < n ; ++i){
  9. scanf("%d",&a[i]);
  10. }
  11. long long i = 0,k = m;
  12. for(i = 0 ; i < maxn ; ++i){
  13. if( 2 * k >= i * (i - 1) && 2 * k<= (1 + i) * i)
  14. break;
  15. }
  16. int ans = k - i * (i - 1) / 2;
  17. printf("%d\n",a[ans - 1]);
  18. }


来自为知笔记(Wiz)


posted on 2016-05-06 13:00  红洋  阅读(167)  评论(0)    收藏  举报

导航