主题:天尝地酒求各位大侠编程.
天尝地酒
[专家分:870] 发布于 2007-04-08 17:05:00
给出二个任意的正整数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个回复)
沙发
爱丽斯LING [专家分:560] 发布于 2007-04-08 17:17:00
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
板凳
蓝莎菲莹 [专家分:370] 发布于 2007-04-08 17:20:00
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
3 楼
小精灵LS [专家分:580] 发布于 2007-04-08 17:20:00
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
4 楼
游戏之王 [专家分:540] 发布于 2007-04-08 17:22:00
CLS
INPUT N,k
DIM K(N)
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
5 楼
随便你好 [专家分:530] 发布于 2007-04-08 17:22:00
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
6 楼
Lovely哆啦 [专家分:1360] 发布于 2007-04-08 17:26:00
CLS
INPUT N,k
DIM K(N)
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
7 楼
007bond [专家分:540] 发布于 2007-04-08 17:27:00
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
8 楼
&佑慧妹妹& [专家分:660] 发布于 2007-04-10 19:46:00
input "n,m=";n,k
r=0
m=0
s=0
do until n=0
n = n - 2^n
m = m + 2^r
r=r+1
s=s+1
if n - 2^r<0 then
if m=k then
print "error!:"
end
end if
else
n=n+k
r=0
m=0
end if
loop
print "step=";s
end
9 楼
黑白猪-- [专家分:420] 发布于 2007-04-11 18:02:00
CLS
INPUT N, K
Y = N
100 S = 0
FOR R = 0 TO Y
IF N - 2 ^ R < 0 THEN N = N + K: GOTO 100
N = N - 2 ^ R
F = F + 1
S = S + 2 ^ R
IF K = S THEN PRINT "ERROR": END
IF N = 0 THEN PRINT "STEP="; F: END
NEXT R
END
10 楼
Matodied [专家分:7560] 发布于 2007-04-20 17:02:00
CLS
INPUT n,k
r=0:s=0:m=0
DO
n=n-2^r
m=m+2^r
s=s+1
r=r+1
IF n=0 THEN EXIT DO
IF n<2^r THEN
IF m=k THEN PRINT"ERROR!":END
n=n+k:r=0:m=0
END IF
LOOP
PRINT "STEP=";s
END
我来回复