回 帖 发 新 帖 刷新版面

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

给出二个任意的正整数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个回复)

沙发

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

板凳

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 楼

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 楼

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 楼

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 楼

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 楼

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 楼

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 楼

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 楼

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

我来回复

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