设为首页收藏本站

八达网

 找回密码
 注册
查看: 221|回复: 20
打印 上一主题 下一主题

很强大, 进来做题目了

[复制链接]

0

主题

0

好友

525

积分

龙骑士

跳转到指定楼层
1
发表于 2009-3-2 12:38 |只看该作者 |倒序浏览
有一个连的士兵执行任务,一共100个士兵,按顺序排上号,连长是1号
这时候开始报数,数到7的人去执行任务,出去的士兵不再参加报数,当数到结尾的时候继续从第一个开始数
连长不想去执行任务,问从几号士兵开始数,才能保证所有士兵都被派去执行任务最后只剩下1号的连长?

举例理解题意
假如有9个士兵,1 2 3 4 5 6 7 8 9
假如从2号士兵开始数,那么
第一次出去执行任务的就是8,剩1 2 3 4 5 6 7 9
8出去了,从9开始数 因为要循环,所以第2次出去的就是6,剩1 2 3 4 5 7 9
同理,第三次出去的是5,剩1 2 3 4 7 9
第四次出去的是7,剩1 2 3 4 9
第五次出去的是1,剩2 3 4 9
第六次出去的是4,剩 2 3 9
第七次出去的是9,剩 2 3
最后一次出去的是2,剩3


看看8da的智商高不高

3

主题

0

好友

1万

积分

航母

2
发表于 2009-3-2 12:48 |只看该作者
3号撒```
回复

使用道具 举报

0

主题

0

好友

525

积分

龙骑士

3
发表于 2009-3-2 12:49 |只看该作者
up~~~~~~~~
回复

使用道具 举报

3

主题

0

好友

1万

积分

航母

4
发表于 2009-3-2 12:49 |只看该作者
连长要第三个数到,所以一概是从第99号开始报数
回复

使用道具 举报

56

主题

5

好友

17万

积分

黑暗执政官

~解梦虫族~

2008年度八达十大水友 2009年度八达十大杰出青年

5
发表于 2009-3-2 12:50 |只看该作者
...9?
处女默默飘,对你们微笑一下,(*^__^*) 嘻嘻……O(∩_∩)O...哈哈...
回复

使用道具 举报

0

主题

0

好友

2万

积分

大和

6
发表于 2009-3-2 12:51 |只看该作者
直接编程解决
而且题意不明
More . The . War .
回复

使用道具 举报

0

主题

0

好友

525

积分

龙骑士

7
发表于 2009-3-2 12:51 |只看该作者
现在是100个士兵
回复

使用道具 举报

6

主题

0

好友

1万

积分

航母

8
发表于 2009-3-2 12:51 |只看该作者
lz这id很特别啊,有什么含义吗?
回复

使用道具 举报

341

主题

0

好友

3万

积分

大和

9
发表于 2009-3-2 12:52 |只看该作者
22222222
回复

使用道具 举报

0

主题

0

好友

525

积分

龙骑士

10
发表于 2009-3-2 12:55 |只看该作者
别瞎猜  要的是推理过程
回复

使用道具 举报

5

主题

0

好友

1万

积分

航母

8DA美男子

11
发表于 2009-3-2 12:58 |只看该作者
小学时候有过类似的题目,那时是古罗马角斗士,报双数出去送死...
回复

使用道具 举报

6

主题

0

好友

1万

积分

航母

12
发表于 2009-3-2 13:00 |只看该作者
回复

使用道具 举报

253

主题

12

好友

11万

积分

黑暗执政官

图样图森破

战队
SCI
种族
Terran
13
发表于 2009-3-2 13:03 |只看该作者
这个貌似谭浩强《C程序设计》课后习题。
回复

使用道具 举报

0

主题

0

好友

313

积分

机枪兵

14
发表于 2009-3-2 13:10 |只看该作者
文科生从来不看数字

http://www.jingwutai.com
回复

使用道具 举报

0

主题

0

好友

2万

积分

大和

15
发表于 2009-3-2 13:12 |只看该作者
969696
回复

使用道具 举报

2

主题

1

好友

3万

积分

大和

16
发表于 2009-3-2 13:17 |只看该作者
C语言题目啊
回复

使用道具 举报

0

主题

0

好友

3万

积分

大和

房地产虫族

17
发表于 2009-3-2 13:19 |只看该作者
第51号
回复

使用道具 举报

2

主题

1

好友

3万

积分

大和

18
发表于 2009-3-2 13:34 |只看该作者
58
65
72
79
86
93
0
7
14
21
28
35
42
49
56
64
73
81
89
97
5
13
22
30
38
46
54
63
74
83
92
2
11
20
31
40
50
60
70
82
94
4
16
26
37
48
61
75
87
99
12
25
39
52
67
80
96
10
27
43
57
76
91
9
29
45
66
85
6
24
47
69
95
18
41
68
98
23
53
84
17
51
88
32
62
8
55
3
59
19
78
44
34
33
36
77
15
71
90
1
Press any key to continue
回复

使用道具 举报

2

主题

1

好友

3万

积分

大和

19
发表于 2009-3-2 13:34 |只看该作者
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXNUM 100
/*#define MAXNUM 9*/

void main(void)
{
        int i,j,k=0,d;
        char p[MAXNUM]={0};
       
        for(i=0;i<MAXNUM;i++)
        {
                for(j=0;j<7;j++)
                {
                        do
                        {
                                ++k%=MAXNUM;
                        }
                        while(p[k]==1);
                }
                p[k]++;
        }
        d=k;
        memset(p,0,100);
        for(i=0,k=0;i<MAXNUM;i++)
        {
                for(j=0;j<7;j++)
                {
                        do
                        {
                                ++k%=MAXNUM;
                        }
                        while(p[k]==1);
                }
                p[k]++;
                printf("%d\n",(k-d+1+MAXNUM)%MAXNUM);
        }
}
回复

使用道具 举报

7

主题

0

好友

1万

积分

航母

20
发表于 2009-3-2 13:37 |只看该作者
回复

使用道具 举报

2

主题

1

好友

3万

积分

大和

21
发表于 2009-3-2 13:41 |只看该作者
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXNUM 100  
        /*
        #define MAXNUM 9
        Total Number of Soilders
         */

void main(void)
{
    int i,j,k=0,d;
    char p[MAXNUM]={0};//初始化都为0,代表都没报数

    for(i=0;i<MAXNUM;i++)
    {
        for(j=0;j<7;j++)
        {//循环7次,最后k就是报7的士兵编号-1(0based)
            do
            {               
                ++k%=MAXNUM;
            }
            while(p[k]==1);
        }
        p[k]++;        //p[n]=0代表没报数,p[n]=1代表已经报数
    }
    d=k;        //以第一个士兵报1开始,第一轮运算找出最后的士兵编号,存为d
    memset(p,0,100);        //重新把p归零


        //第二轮运算,让最后一个报数编号为1:(k-d+1+MAXNUM)%MAXNUM
    for(i=0,k=0;i<MAXNUM;i++)
    {
        for(j=0;j<7;j++)
        {
            do
            {
                ++k%=MAXNUM;
            }
            while(p[k]==1);
        }
        p[k]++;
                //第二轮运算,按报数顺序输出
        printf("%d\n",(k-d+1+MAXNUM)%MAXNUM);
    }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|八达网    

GMT+8, 2026-3-10 22:24

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部