作者reader (读者)
看板CSSE
标题Re: [闲聊] 被制约的头脑
时间Fri May 27 11:06:50 2005
※ 引述《giive (lala)》之铭言:
: 从 10 加到 10000 的程式要怎麽写
: 10000个programer应该有9990个会用for或是类似的回圈写
: int result=0;
: for(int a = 10 ; a <=10000 ; a++){
: result += a;
: }
: 一定只能这样写吗??
: int a =10 , b=10000 , result = 0;
: result = (a+b)*(b-a+1)/2 ; -------> 小学的梯形运算
: 用for是得跑 9990次的加法运算
: 用梯形运算只需要 三次加法(减也算加) 一次整数乘 一次整数除
: 因为是除以2 , 应该还可以用shift的方式加速
: 有一股蛋蛋的忧伤
: 我的头脑有一种被制约的感触
题目是「从 10 加到 10000 的程式」当然得这样写。
如果是要答案的话,直接打 50004955 就得了,何必写程式呢?
小学生也知道从 1 加到 10^n 就是 5 後面加 n-1 个 0 然後重复一次。
於是答案即是从 1 加到 10000 减去 1 加到 9, 而 1 加到 9 就是 1 加到 10
减去 10, 亦即 50005000 - (55 - 10), 用直观法就能得到答案。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.222.173.29