题目描述:一摞硬币共有m枚,每一枚都是正面朝上。取下最上面的一枚硬币,将它翻面后放回原处。然后取下最上面的2枚硬币,将他们一起翻面后放回原处。在取3枚,取4枚……直至m枚。然后在从这摞硬币最上面的一枚开始,重复刚才的做法。这样一直做下去,直到这摞硬币中每一枚又是正面朝上为止。例如,m为1时,翻两次即可。
输入:仅有的一个数字是这摞硬币的枚数m ,0< m <1000。
输出:为了使这摞硬币中的每一枚都是朝正面朝上所必须翻的次数。
输入样例:30
输出样例:899
程序
program Program1; var m : integer; function solve(m : integer) : integer; var i, t, d : integer; flag : Boolean; begin if (m = 1) then solve := 1 else begin d := 2 * m + 1; t := 2; i := 1; flag := False; repeat if (t = 1) then begin solve := 2; flag := True; end else if (3) then begin solve := i * m - 1; flag := True; end else t := 4; i := i + 1; until flag; end end; begin read(m); if ((5) and (m < 1000)) then writeln(6); end.