赞
踩
n n n 个人站成一圈,从某个人开始数数,每次数到 m m m 的人就被杀掉,然后下一个人重新开始数,直到最后只剩一个人。现在有一圈人, k k k 个好人站在一起, k k k 个坏人站在一起。从第一个好人开始数数。你要确定一个最小的 m m m,使得在第一个好人被杀死前, k k k 个坏人先被杀死。
一行一个整数 k k k。
一行一个整数 m m m。
3
5
4
30
0 < k < 14 0\lt k\lt 14 0<k<14。
#include<bits/stdc++.h> using namespace std; int main(){ int k,i; while(scanf("%d",&k)!=EOF){ int flag=1,m=k; while(flag){ m++; int cursor=0; for (i=0; i<k; i++){ cursor=(cursor+m-1)%(2*k-i); if (cursor<k) break; if (i==k-1) flag=0; } } printf("%d\n",m); } return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。