主题:做出此题者一律加分30
tujunqiang
[专家分:150] 发布于 2005-11-07 09:16:00
21 — 22 — 23 — 24 — 25 — 26
| |
20 7 — 8 — 9 — 10 27
| | | |
19 6 1 — 2 11 28
| | | | |
18 5 — 4 — 3 12 :
| | :
17 — 16 — 15 — 14 — 13
如图:将自然数1,2,3,4……排列成螺旋形,在数2处拐第一个弯,在数3处拐第二个弯,在数5处拐第三个弯……
问:(1)拐第20个弯的地方是哪一个数?
(2)拐第N个弯的地方是哪一个数?
回复列表 (共12个回复)
沙发
jtchang [专家分:5370] 发布于 2005-11-07 11:50:00
粗略看一下,求第N个拐弯上的数,可以这样算:
设有
k = N div 2
a = N mod 2 + 1
则 所求
x = k*k + a*k + a
=======================
第20个转弯:
k = 10
a = 1
x = 10*10 + 1*10 + 1 = 111
板凳
mythjoker [专家分:400] 发布于 2005-11-07 16:58:00
21 — 22 — 23 — 24 — 25 — 26
| |
20 7 — 8 — 9 — 10 27
| | | |
19 6 1 — 2 11 28
| | | | |
18 5 — 4 — 3 12 :
| | :
17 — 16 — 15 — 14 — 13
观察:你的‘—’的数是 1 1 2 2 3 3 4 4 ........这样递增
所以推断第一个弯 1+1=2; 第二个:2+1=3 第三个:3+2=5 .......
所以
f:=1;
for i:=1 to n do
f:=f+((i-1) div 2)+1;
3 楼
jtchang [专家分:5370] 发布于 2005-11-07 22:44:00
呵呵!2楼的答案也是111啊!那支持~~~
“做出此题者一律加分30”,我连循环都不用打,手算都算出多少来,就是不给30分。
但是我愿意弄个眼花缭乱的公式出来,让人看得稀里糊涂不知道怎么回事,呵呵!(^_^)
4 楼
mythjoker [专家分:400] 发布于 2005-11-08 06:45:00
您的式子我真没看懂!不过挺厉害的,教教我好吗?
5 楼
jtchang [专家分:5370] 发布于 2005-11-08 22:38:00
呵呵~~~上来看了一下,看了楼主的加分,笑了半天~~~怎么加都不够30。不过我并不想要加分。只是想上来回一个帖给mythjoker:
你找出这样的规律很棒。我的公式,开始跟你的求证方法思路是不一样的。不过仔细想想我们两种解法其实是一样的,于是上来讲一个故事:
S = 1+2+3+4+……
它的前n项和是多少?
高斯小时候,他的老师,让全班同学算1+2+3+……+100=?。当其他同学都在一个数一个数地加时,高斯答案脱口而出:5050……
(讲到这里,好多网友扔了鸡蛋上来……别讲啦!这么老掉牙的故事谁都知道啦!jtchang你还讲~~~~)
那好,我讲一个新的故事:
一天,jtchag问大家:
S = 1+1+2+2+3+3+4+4+5……
它的前n项和是多少?然后把算出来的这个数再加上1是多少?
这时那些扔鸡蛋的人不敢再扔鸡蛋了,说:咦,高斯算的问题不是这样的啊,不大好算啊,我只会一个数一个数地加~所以最好的方法还是一个数一个数去加好了~
呵呵~~~ 开个玩笑而已~其实你也可以很轻易地写出一个公式来,并且证明自己的那个公式是对的。(^_^)
比如楼主的原题,N = 20 时,答案为什么是111?
x = 1+1+2+2+3+3+……+9+9+10+10 + 1
= 2*(1+2+3+4+……+10) + 1
= 2*55 +1
= 111
6 楼
mythjoker [专家分:400] 发布于 2005-11-09 06:52:00
呵呵!你真的好棒!
好有讲故事的天赋!!!
谢谢了!
你有时间的话去看看我发的皇后遍历问题好吗?
这么些天,没有一个人回,我好郁闷!嘿嘿!!!
7 楼
梦幻神兵 [专家分:600] 发布于 2005-11-12 16:46:00
好厉害呀!小弟佩服!
8 楼
无敌傻仔 [专家分:210] 发布于 2005-11-21 17:02:00
真厉害
9 楼
vvv832 [专家分:360] 发布于 2005-11-24 12:23:00
大致就是上面的结果(-_-!)
10 楼
michaellyz [专家分:270] 发布于 2005-11-27 18:30:00
var
n,i:integer;
k:longint;
begin
readln(n);
k:=2;
for i:=1 to (n-1) do k:=k+i;
writeln(k);
end.
我来回复