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; } } }

浙公网安备 33010602011771号