回 帖 发 新 帖 刷新版面

主题:拼正方形

问题描述:现有若干根长度均为1厘米木棍,用4根可以拼成一个边长1厘米的正方形(称为单位正方形),而用7根和10根木棍则可以分别拼出两个和三个单位正方形,如下图所示: 
请你编程算算用这样的方法拼出N个单位正方形需要多少根木棍? 
输入:由键盘读入N的值,其中N不超过2004。 
输出:将你计算的结果,即拼出N个单位正方形所用的木棍数目输出到屏幕上。 
例如:输入N=2,你的程序应输出7。 

回复列表 (共10个回复)

沙发

CLS
INPUT n
IF SQR(n) = INT(SQR(n)) THEN s = SQR(n) ELSE s = INT(SQR(n)) + 1
t = (n - s) / s
IF t <> INT(t) THEN t = INT(t) + 1
PRINT 1 + (s + t) * 3 + (n - s - t) * 2
END
加分!!!

板凳

┌─┬─┬─┐
│ 5│ 4│ 3│
├─┼─┼─│
│ 6│ 1│ 2│
├─┼─┼─┼─┐
│ 7│ 8│ 9│10│
└─┴─┴─┴─┘

代码,你试试对不对 ?:

   s%=SQR(N)
   PRINT 2*s%*(s%+1)+(N-s%*s%)*2+(N-s%*s%+s%-1)\s%

3 楼

OK

4 楼

MOZ,你看我这样编对不对:
INPUT N 
PRINT N * 3 + 1

5 楼

当然不对了,当N=4时,做一个四方形,你数数看,是不是省了一根?

6 楼

这道题还有另外一种解法:
(1)先拼一个s*s的正方形,其中s是INT(SQR(n))
(2)将剩下的正方形依次加到大正方形的下面,使组成一个长方形.
(3)如果剩下的正方形数小于s,则直接加到长方形的下面.
程序:
CLS
INPUT n
s = INT(SQR(n))
t1 = 1 + (s * 2 - 1) * 3 + ((s - 1) * (s - 1)) * 2
n = n - s * s
DO UNTIL n < s
   t1 = t1 + (s * 2 + 1)
   n = n - s
LOOP
IF n > 0 THEN t1 = t1 + 3 + (n - 1) * 2
PRINT t1
END
两种算法哪个好,你自己选吧!

7 楼

moz,这道题不是让我们这样拼吗?
  — — —
 |  |  |  |
  — — —
只有这样7根和10根木棍才可以分别拼出两个和三个单位正方形啊。

8 楼

依照这样我的程序:输入4,输出4*3+1=13
  — — — — 
 |  |  |  |  |
  — — — — 
您数数,是不是13根。
Matodied的第一个程序输出的是12,我也不知道哪个对,MOZ你说呢?

9 楼

MOZ叫你摆成四方形,就是这样的:

 — —
|  |  |   是不是只要12根了?
 — —
|  |  |
 — —

10 楼

[quote]当然不对了,当N=4时,做一个四方形,你数数看,是不是省了一根?[/quote]
MOZ叫你摆成四方形,就是这样的:

 — —
|  |  |   是不是只要12根了?
 — —
|  |  |
 — —

我来回复

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