回 帖 发 新 帖 刷新版面

主题:天尝地酒求各位大侠编程.

给出二个任意的正整数N,K(1<=N<=10000,0<=K<N),然后进行如下操作:
1)从N中连续减去2R(R=0,1,2,3,...)
2)当剩余的数不够减时,则将其加上K,再重复(1)的操作过程。
3)若剩余的数为0时,则结束操作并输出进行减法的次数。
4)若存在永远不能减完的情况,则输出信息“ERROR!”。
例如:当N=4,K=2时,操作过程如下:
1) 4-1=3  减20   
2) 3-2=1  减21
由于不够减,所以加K的值2,得:N=1+2=3
3) 3-1=2  减20
4) 2-2=0  减21
此时结果为0,则输出:STEP=4(表示进行了4次减法操作运算)
又如:当N=2,K=1时,操作过程如下:
1) 2-1=1  减20
由于不够下次减,所以加K的值1,得:N=1+1=2
2) 2-1=1  减20
…………
在这种情况下,永远不能减完,则输出信息“ERROR!”

回复列表 (共16个回复)

11 楼

CLS
1 INPUT N, K
IF N <= 1 AND N >= 10000 AND K <= 0 AND K >= N THEN 1
2 S = 0
FOR I = 0 TO N
  IF N - 2 ^ I < 0 THEN N = N + K: GOTO 2
  N = N - 2 ^ I: F = F + 1:S = S + 2 ^ I
  IF K = S THEN PRINT "ERROR!": END
  IF N = 0 THEN PRINT "STEP="; F: END
NEXT I
END

12 楼

&佑慧妹妹&你的程序太麻烦了!!!不可取!!!

13 楼

佑慧妹妹 已经不知道跑哪去了。

14 楼

1 楼  
CLS
10 INPUT N, K
IF N <= 1 AND N >= 10000 AND K <= 0 AND K >= N THEN 10
20 S = 0
FOR I = 0 TO N
  IF N - 2 ^ I < 0 THEN N = N + K: GOTO 20
  N = N - 2 ^ I: F = F + 1:S = S + 2 ^ I
  IF K = S THEN PRINT "ERROR!": END
  IF N = 0 THEN PRINT "STEP="; F: END
NEXT I

15 楼

CLS
INPUT N
INPUT K
DIM K(N)
J = 0
2 IF N >= K THEN 3 ELSE 7
3 K(J) = N MOD K
N = N \ K
J = J + 1
GOTO 2
7 K(J) = N
FOR I = J TO 0 STEP -1
PRINT K(I);
NEXT I
END

16 楼

CLS
10 INPUT N,K
IF N <= 1 AND N >= 10000 AND K <= 0 AND K >= N THEN 10
20 S = 0
FOR I = 0 TO N
  IF N - 2 ^ I < 0 THEN N = N + K: GOTO 20
  N = N - 2 ^ I: F = F + 1:S = S + 2 ^ I
  IF K = S THEN PRINT "ERROR!": END
  IF N = 0 THEN PRINT "STEP="; F: END
NEXT I


我来回复

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