作者OpenGoodHate (什麽东西什麽东西)
看板STU
标题Re: [闲聊] 题目看起来很简单的数学问题…资工或金 …
时间Wed Apr 29 16:19:00 2009
※ 引述《laymu (炎罗)》之铭言:
贴出我的Code
#include <stdio.h>
#include <stdlib.h>
int main()
{
int buy = 10 , sell = 5 , mony = 50 ;
int x = 0 , total = 0 , tree = 0 , buytime = 10 ;
// Round 0
printf("%d,%d,%d,\n",total,mony,tree);
while ( mony <= 1000 )
{
total++ ;
if ( tree * sell + mony >= 1000 )
{
mony = tree * sell + mony;
tree = 0;
//把树全卖了
}
else if( mony / buytime > 0 )
{
tree = tree + mony / buy ;
//算出要买几棵
mony = mony % buy ;
//算出买树花了多少钱
buytime = buytime * 2;
}
else
mony = mony + tree ;
//不买树的生钱时间
printf("%d,%d,%d,\n",total,mony,tree);
}
printf("%d,\n,%d",total,mony);
system("pause");
}
52回合
最终1024元
再找时间用Java写
--
你有看过有人写C的时後,是拿Java的书在翻的吗
嗯~~那个人就是我XDXD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.204.105.162
1F:推 andy012315 :老师没教C = = 04/29 16:32
2F:推 laymu :if(mony/buttime>0) 和 buytime*=2的理由是什麽? 04/29 16:39
IF是判定你有没有足够的钱去买树,没有的话就存钱
byetime*=2 是每隔2的次方次後再买树
是为了降低买树的次数
这有点像是生管系统
要怎麽样组合才能得出C/P值最高的投资
3F:→ willy0206 :这只程式不用学c也看的懂 printf的%d对应後面的 , 04/29 16:50
4F:推 andy012315 :中路略懂 前三行不懂X 04/29 17:00
前三行
阿就跟Java的inport一样呀
然後就主程式啦
5F:→ laymu :语法不重要啦,重点是why to do that? 04/29 17:15
每次数学都是用C写
也不知道为啥
可能比较顺吧
6F:推 laymu :不,我的意思是为什麽要每隔2的次方才买? 04/29 19:02
7F:→ laymu :有理由吗?还是经验 04/29 19:02
8F:→ laymu :就像我之前的写法是手中的现金达到10的整数倍才买 04/29 19:04
9F:→ laymu :一样是没有理由,靠直觉回变猜的… 04/29 19:04
用猜的
只是想办法降低中断发生的机会
(OS中的多重处理,降低中断可以提高系统效能…)
10F:推 laymu :「减少中断」这给了我一些灵感,我想应该存在一个 04/29 19:59
11F:→ laymu :次数,是最有效率的。多於或少於这个次数都不会最快 04/29 19:59
12F:→ laymu :然後拥有同样中断次数的流程,则存在很多种。 04/29 20:00
13F:→ laymu :不过目前不能把时间花在这上头 -_- 04/29 20:01
可以这样想
中断是必要的(因为要买树)
但是是要在哪一回合被中断
这样扣掉这一回合买树後的金钱增加量可以在最短时间内补回来
(买树现亏总金额/2 + 树现有总量)
但是如果你天天在中断的话
就都给你发中断要求就好啦
其实很明显的
你若是每存满7棵、10棵树才买的话
那所需回合数也比每存满一棵树就发出中段请求买树的效率要高
※ 编辑: OpenGoodHate 来自: 123.204.105.162 (04/29 20:11)
※ 编辑: OpenGoodHate 来自: 61.223.228.68 (05/01 07:10)