编程题

翻硬币

题目描述:

  一摞硬币共有m枚,每一枚都是正面朝上。取下最上面的一枚硬币,将它翻面后放回原处。然后取下最上面的2枚硬币,将他们一起翻面后再放回原处。再取3枚,取4枚……直至m枚。然后再从这摞硬币最上面的一枚开始,重复刚才的做法。这样一直做下去,直到这摞硬币中的每一枚又都是正面朝上为止。例如,m为1时,翻两次即可。m为2时,翻3次即可;m为3时,翻9次即可;m为4时,翻11次即可;m为5时,翻24次即可;…;m为30时,翻899次即可;…

输 入:

  仅有的一个数字是这摞硬币的枚数m,0

  输 出:

  为了使这摞硬币中的每一枚又都是正面朝上所必需翻的次数。

  输入样例:

      30

  输出样例:

      899

  程 序:

    program Programl;

    var m:integer;

     function solve (m:integer):integer;

     vat i,t,d:integer;

       flag:boolean;

     begin

      if (m=1)then

       so1ve:= ①

      else begin

         d:=2*m 1;

         t:= 2;

         i:= 1;

         flag:=False;

         repeat

          if (t=1)then

           begin

            solve:= ②

            flag:=True;

           end

          else if ( ③ )then

              begin

               solve:=i*m-1;

               flag:=True;

              end

             else

              t:= ④ ;

          i:=i 1;

         until flag;

        end

      end;

    begin

     read (m);

     if ((m>0) and (m<1000)) then

      writeln ( ⑤ );

    end.

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论