3号小朋友报数3;
4号小朋友报数4淘汰;
5号小朋友报数5;
1号小朋友报数6淘汰;
3号小朋友报数7;
5号小朋友报数8淘汰;
3号小朋友获胜。
给定 n和 k,请问最后获胜的小朋友编号为多少?
输入格式
输入一行,包括两个整数 n和 k,意义如题目所述。
输出格式
输出一行,包含一个整数,表示获胜的小朋友编号。
样例输入
5 2
样例输出
3
样例输入
7 3
样例输出
4
数据规模和约定
对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。
解题思路:
=====
类似于约瑟夫环的问题,只不过出圈的判断不同而已~~~
解题代码:
=====
#include<stdio.h>
#include
using namespace std;
int n,k,a[1005];
bool judge(int x){
if(x % k == 0 || x % 10 == k) return true;
return false;
}
//数组a[i]=0表示还在圈内
int main(){
scanf(“%d%d”,&n,&k);
int i=0,cnt=0,ans=0; //i作为下标,cnt记录当前报数,ans记录出圈总数
while(ans < n-1){
i = i % n + 1;
while(a[i]){ //需要跳过