语法百题36-99 联系客服

发布时间 : 星期日 文章语法百题36-99更新完毕开始阅读97117bb084868762caaed5a4

printf(\ return 0; }

1077: 语法百题 约瑟夫问题1 时间限制: 1 Sec 内存限制: 128 MB

题目描述

有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。 输入

初始人数n 输出

最后一人的初始编号 样例输入 3 样例输出 2

#include

const int M = 3;

int main() {

int n, s = 0; scanf(\

for (int i = 2; i <= n; ++i) s = (s+M)%i;

printf(\ return 0; }

1078: 语法百题 约瑟夫问题2

时间限制: 1 Sec 内存限制: 128 MB

题目描述

设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。 输入

多组数据,输入多行,每行2个数,分别表示n和m. 输出

多行,计算每一行中最后剩下这个人的编号. 样例输入 10 3 2 1 样例输出 4 2

#include using namespace std; int main(void) {

int i,n,m,p,q,s; int a[1000];

while(cin>>n>>m) {

for(i=0;i

a[i]=1; p=0;

for(q=1;q<=n-1;q++) {

for(i=p;i

i=(i-1)%n; a[i]=0;