标签:大神 code 开始 题目 数据 输入 break scanf mda
n个人站成一圈,从某个人开始数数,每次数到m的人就被杀掉,然后下一个人重新开始数,直到最后只剩一个人。现在有一圈人,k个好人站在一起,k个坏人站在一起。从第一个好人开始数数。你要确定一个最小的m,使得在第一个好人被杀死前,k个坏人先被杀死。
感谢yh大神指出样例数据的错误。
输入格式:
一个k,0<k<14
输出格式:
一个m
3
5
4
30
0<k<14
枚举答案——检验
#include<cstdio> int k,Ct; bool Check( int m ) { Ct=0; for(int T=k*2;T!=k;T--) { (Ct+=m%T)%=T; if(Ct<k)return false; } return true; } int main() { scanf("%d",&k); int ans; for(ans=1;;ans++ ) if( Check(ans))break; printf("%d\n",ans+1); return 0; }
标签:大神 code 开始 题目 数据 输入 break scanf mda
原文地址:http://www.cnblogs.com/sssy/p/7082616.html