CCF_游戏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35899290/article/details/79545021
#include<iostream>
#include<vector>
using namespace std;
//从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。
//若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。

//当游戏中只剩下一个小朋友时,该小朋友获胜。 

//样例输入 
//5 2 
//样例输出 
//3 

int main(){
/*向量容器(vector)是一种顺序容器,是一块连续分配的内存,支持随机访问,
从数据安排的角度看,和数组极其相似,数组跟vector的区别在于:数组是静态分配空间,
一旦分配了空间的大小,就不可以再改变了,例如,int a[6];而vector是动态分配内存,
随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量,
vector容器的容量增长是按照容器现在容量的一倍进行增长。
*/
vector<int> v;
int n, k;
cin >> n >> k;
for (int i = 1; i <= n; ++i){
v.push_back(i);
}
int num = 0;
while (v.size() > 1){
n = v.size();
int len = 0;
for (int i = 0; i < n; ++i){
++num;
if (num%k&&num % 10 != k)
v[len++] = v[i];
}
if (len == 0)
v[len++] = v.back();//返回当前vector容器中末尾元素的引用。
    //iterator begin();返回一个当前vector容器中起始元素的迭代器。
   //iterator end();返回一个当前vector容器中末尾元素的迭代器。
  //reference front();返回当前vector容器中起始元素的引用。
v.resize(len);
}
cout << v[0] << endl;
return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_35899290/article/details/79545021