level 1
只有加法和减法,左移和右移,没有乘除
数字只能用0到255的整数,
请用两个数表示年份,并计算这个年份除以12的带余除法
请用效率最高的方法
例如1990可以用19,90两个数表示
2010年10月18日 14点10分
1
level 5
效率有多高?不清楚
CLS
INPUT n1$, n2$
n1 = VAL(n1$): n2 = VAL(n2$)
WHILE n1 >= 12
n1 = n1 - 12
x = x + 1
WEND
n$ = STR$(n1) + LEFT$(n2$, 1)
n = VAL(n$)
WHILE n >= 12
n = n - 12
y = y + 1
WEND
n$ = STR$(n) + RIGHT$(n2$, 1)
n = VAL(n$)
WHILE n >= 12
n = n - 12
z = z + 1
WEND
m = VAL(STR$(x) + STR$(y) + STR$(z))
PRINT m, n
END
2010年12月15日 04点12分
2
level 5
怀疑?
运行一下不就知道了,现在的人懒得不能提了。。。
2010年12月24日 18点12分
4
level 1
这根本就是笔算的除法嘛....想不到做到程序里会是这样.....哈哈哈...
2010年12月25日 14点12分
5
level 1
这道题有点超出了qbasic的能力了,因为QB没有移位.(QB是有mod的)
我用算法写个算式吧,我认这是最快的.
用M1,M2记录
(((M1 mod 12)<<2)+(M2 mod 12)) mod 12
这里mod 12 可以由加减实现,如
WHILE n >= 12
n = n - 12
z = z + 1
WEND
2010年12月25日 14点12分
6
level 5
“只有加法和减法,左移和右移,没有乘除”
题目上这么写,所以没用MOD,实现的方法和你写的一样,qb没有移位,我就加个移位的过程,过程比较繁琐。
有一部分代码可写成子程序,所以这种题目在qb里做效率不高
2010年12月25日 16点12分
7
level 5
你如果有时间写一个完整的代码让我参考一下,basic/c/c++/pascal都行,谢谢了
2010年12月25日 17点12分
8