作者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)