万卷网> 考级竞赛> 信息学奥赛> NOIP普及组

NOIP普及组

更新时间: 2023-08-26 20:36:18  试题数量: 535 

题库预览
简答题 翻硬币题目描述:   一摞硬币共有m枚,每一枚都是正面朝上。取下最上面的一枚硬币,将它翻面后放回原处。然后取下最上面的2枚硬币,将他们一起翻面后再放回原处。再取3枚,取4枚……直至m枚。然后再从这摞硬币最上面的一枚开始,重复刚才的做法。这样一直做下去,直到这摞硬币中的每一枚又都是正面朝上为止。例如,m为1时,翻两次即可。m为2时,翻3次即可;m为3时,翻9次即可;m为4时,翻11次即可;m为5时,翻24次即可;…;m为30时,翻899次即可;… 输 入:   仅有的一个数字是这摞硬币的枚数m,0<m<1000。   输 出:   为了使这摞硬币中的每一枚又都是正面朝上所必需翻的次数。   输入样例:       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.
公众号
客服 反馈
顶部