主题:聪明的阿卑多
ZHANGHONGCHENG
[专家分:70] 发布于 2009-02-11 20:59:00
聪明的阿卑多
也许你从没听说过阿卑多,但你一定知道他爷爷的爷爷的爷爷,那就是聪明绝顶的阿凡提先生。是的,阿卑多也是个聪明的小孩。
一天,阿卑多骑着他的小毛驴,在小镇上晃悠,正好遇上了小巴依——那个自以为是的小财主。小巴依正在炫耀他的金币:
“你们见过这样的金币么?这可不是一般的金币,你看它们多大多重啊!最主要的是,它们每个上面都刻有我的名字和一个编号,是独一无二的!看看,从我出生开始,每2个月,爸爸便给我1个特做的大金币,并从1开始编号,现在我已经有60枚了,哈哈……”小巴依见了阿卑多,于是便想考一考他:“阿卑多,听说你是最聪明的。看见我每个金币上的数字了吗?你现在拿取一半的金币,并能用你拿的若干金币上的数的和表示我的任意一枚金币上的数。如果你能办到,那么就奖你一枚金币;如果不能,就给我做三年长工好了。”阿卑多想了一想,说:“我可以只拿1/10就办到,不过如果我办到了,你就得分一半金币给我。” 1/10?小巴依心想,你准备给我当长工好了。
于是阿卑多开始取金币……自然,阿卑多出色的完成了任务,得到了30枚金币,同样的,他把这些金币都分给了穷人们。
给你的任务就不同了。
输入:一个数n(1<=n<=1000) 表示金币枚数(金币上的数分别为1到n)
输出:两个数,阿卑多最少要拿的金币数以及不同的方案数。
样例:
Abido.in Abido.out
6 3 2 (2种拿法:拿取编号为1、2、3的金币;或拿取编号为1、2、4的金币)
测试数据
输入 输出
1 1 1
127 7 1
32 6 724
500 9 74
800 10 13632426
回复列表 (共10个回复)
沙发
hxy_anhui [专家分:320] 发布于 2009-02-14 18:34:00
CLS
DIM SHARED N, K, S, Y AS DOUBLE
INPUT N
DO
K = K + 1
M = 2 ^ K – 1
LOOP UNTIL M >= N
DIM SHARED A(K)
HXY(1)
PRINT K; Y
END
SUB HXY(X)
FOR I = S + 1 TO A(X – 1) + 1 STEP -1
A(X) = I
S = S + I
IF X < K THEN
HXY(X + 1)
ELSE
S = S – I
IF S + I >= N THEN
Y = Y + 1
ELSE
EXIT FOR
END IF
END IF
NEXT I
S = S – A(X – 1)
END SUB
板凳
天天和和 [专家分:1420] 发布于 2009-03-05 23:39:00
hxy 你好厉害!
3 楼
hxy_anhui [专家分:320] 发布于 2009-03-13 19:48:00
ZHANGHONGCHENG,能不能再出几道我们没做过的题目呀?
4 楼
三国风云 [专家分:140] 发布于 2009-06-05 11:43:00
洪新宇要直接上七年级了
5 楼
天天和和 [专家分:1420] 发布于 2009-06-08 23:10:00
hxy 记住再也切勿泄漏题目了~
6 楼
lurunqi [专家分:0] 发布于 2009-11-07 21:53:00
我对你刮目相看,太了不起了
7 楼
小小DAVID [专家分:300] 发布于 2009-11-21 19:55:00
这是我编得DECLARE SUB hxy (x!)
CLS
DIM SHARED n, k, s, y AS DOUBLE
INPUT n
DO
k = k + 1
m = 2 ^ k - 1
LOOP UNTIL m >= n
DIM SHARED a(k)
hxy (1)
PRINT k; y
END
SUB hxy (x)
FOR i = s + 1 TO a(x - 1) + 1 STEP -1
a(x) = i
s = s + i
IF x < k THEN
hxy (x + 1)
ELSE
s = s - i
IF s + i >= n THEN
y = y + 1
ELSE
EXIT FOR
END IF
END IF
NEXT i
s = s - a(x - 1)
END SUB
8 楼
小小DAVID [专家分:300] 发布于 2009-11-21 19:56:00
但缺陷就是不能数大于100的数
9 楼
593170024 [专家分:500] 发布于 2009-12-06 14:48:00
洪新宇,你还记得区赛在你旁边的人忙?
10 楼
斤斤计较 [专家分:0] 发布于 2010-01-31 13:16:00
那是
我来回复