回 帖 发 新 帖 刷新版面

主题:一个Pascal问题,请大家来作(狐狸捉兔子)

【问题】围绕着山顶有10个洞,狐狸要吃兔子,兔子说:"可以,但必须找到我,我就藏身于这十个洞中,你从10号洞出发,先到1号洞找,第二次隔1个洞找,第三次隔2个洞找,以后如此类推,次数不限。"但狐狸从早到晚进进出出了1000次,仍没有找到兔子。问兔子究竟藏在哪个洞里?

大家来做做吧~~~~~~~~~~~~~~~~~

回复列表 (共21个回复)

沙发

不是吧,没人作~~~~~~~~~~~~~~~~~~~~

没办法,只好自己的发上来了~~~~~~~~~~~~~~

program tuzi;
const n=10;
var
   i,j,k:integer;
   a:array[0..9]of boolean;
begin
     for i:=1 to n do a[i]:=false;
     i:=2;
     while i<=9 do
     begin
          a[i]:=true;
          j:=1;
          k:=1;
          while (not a[j])and(k<=999) do
          begin
               k:=k+1;
               j:=(j+k)mod n;
          end;
          a[i]:=false;
          if k=1000 then writeln(i);
          i:=i+1;
     end;
     readln
end.

板凳

又沉下去了~~~~~~~~~~~~~~~~~~

3 楼

不是没人做~~~这个好像以前有人出来~~你看看以前的贴呢~~~

4 楼

我靠
我去年的冬令营最终测试就有这题.
模拟一下就好了.
(南京)分营.

5 楼

楼上的,你看见过,但有的人没看见过呀!你吵什么!要证明你很厉害就拿实事来证明呀!光说不做又算什么呢?

6 楼

呵呵~~~
CXXX401
不是我一个人吵你哟~~
你嘴巴真的有点讨厌哟~~~~~~~~~~~~~~~

支持xpycc吵他(不过不要太过火了~~~~~哟~~)
[em12]

7 楼

实话说xpycc你的那个解我没看懂,,,,能一步一步的解释一下吗?特别是变量的用处`~~




我也写了个,不知道对不对~~~
program tuzi;
const n=10;
var
   i,j,k:integer;
   a:array[1..n] of boolean;
begin
   for i:=1 to n do a[i]:=true;
   j:=1;
   for i:=1 to 1000 do
    begin
       a[i mod n]:=false;
       j:=j+1;
       i:=j+i;
    end;
   for i:=1 to 10 do
        if a[i] then write(i:3);
   readln;
end.      


结果为:
2 5 7 10

8 楼

其实我的方法不是最好,因为有重复,不过既然楼上要求,那就解释一下:

数组a表洞,每次循环找到一个位置i,假设这里是兔子呆的地方,注意0表示10;

接下来就是模拟,若狐狸根据规则找到了兔子呆的地方,那么就跳出模拟;

如果狐狸没找到,那么就输出此时的i。

其实这一道也可以理解为数学问题:
就是1+2+3+...+n(n是在不断自增1的整数)个位数字没有出现过的都是题目的正解。

9 楼

看看我做对了吗?

10 楼

你运行一下,答案是2,4,7,9~~~~~~~~~~~~~~~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册