csp201712-2

题目链接:计算机软件能力认证考试系统

本来用vector写,写得挺简单,没想到最后一个超时了、

 

主要思路就是当计数遇到值为0的位置时,坑keng的数目加一,那么要判断的真实位置就是计数值+keng的数目

举个栗子:n k = 5 2

当计数值为7时,这个位置已经赋值为0,因此keng数目加一,然后判断d+keng

由于keng的数目就是跳过的位置数目,所以满足d+keng就是真实位置

#include<bits/stdc++.h>
using namespace std;
int a[1005];
int main(){
    int n,k;scanf("%d%d",&n,&k);
    for(int i=0;i<n;i++){
        a[i]=1;
    }
    int count=0;
    int d=0;
    int keng=0;
    while(count!=n-1){
        d++;
        while(a[(d+keng)%n]==0){
            keng++;
        }
        if(d%k==0||d%10==k){
            a[(d+keng)%n]=0;
            count++;
        }
    }
    for(int i=0;i<n;i++){
        if(a[i]!=0){
            if(i==0)
                cout<<n;
            else
                cout<<i;
            break;
        }
    }
}

 

posted @ 2023-03-05 21:30  头像是睿智  阅读(25)  评论(0)    收藏  举报