…一大早睡迷糊了,刚开始想直接判断倍数/个位数然后找到特定的数然后抛出,但是思考了一下发现数组做这个不好做,就换了。参考了博客1和博客2。
有个点要注意,也就是k为1的情况,如果k为1的话按照原来的判断,一轮喊完数字直接全军覆没出局+游戏中止,啥也输出不了,因为找不到符合要求的,但是实际上这个时候是会优先剩下最后一个人就游戏结束这个条件,所以还剩一个人的时候直接退出不判断。博客1直接开头分情况讨论,博客2的话是放在判断里面了,效果是一样的。
#include<iostream>
using namespace std;
int main(){
int n,k,sum=0;
int a[1001]={0};
int flag[1001];
cin>>n>>k;
for(int i=0;i<n;i++){
flag[i]=1;
}
int m=n;
if(k==1){
cout<<n<<endl;
}
else{
while(m>1){
for(int i=0;i<n;i++){
if(flag[i]==0){
continue;
}
else{
sum++;
a[i]=sum;
if((sum%k==0)||(sum%10==k)){
flag[i]=0;
m--;
}
}
}
}
for(int i=0;i<n;i++){
if(flag[i]==1){
cout<<i+1<<endl;
}
}
}
}
本文介绍了在2017年CCF CSP比赛中涉及的一个游戏问题,探讨了如何判断数字倍数和个位数,以及特殊情况——当k为1时的游戏结束条件。内容参考了其他两篇博客,分别从不同角度处理这个问题。

被折叠的 条评论
为什么被折叠?



