10/19/2006

PROBLEM #4.1

有一個很好玩的數字遊戯是:假設第一天到銀行存一分錢,第二天存二分錢,第三天三分錢,如此累積,問何時可以累積到10,000,000元?(設銀行的年息為5%)

  1. 撰寫一程式,試算上述之過程,並將其每達1000元倍數之日數同時印出,直到達到所期望之金額。
  2. 若每天所存改為五分錢、十分錢、十五分錢,。。。,試比較達到期望金額之日數。
  3. 實際生活上能否執行此項累積方式,試說明你的想法。

4 則留言:

ncbee 提到...

% 第一小題程式碼 %
close all
clear
clc
n=0;
sum=0;
p=1000;
d1=1;
while sum<100000000
n=n+1;%每一天增加一元
sum=sum+sum*(5/100/365);%前一天的利息
sum=sum+n;%每天的本金
end
fprintf('每天增加一元存到10,000,000要花%d天\n',n)

% 執行結果 %
每天增加一元存到10,000,000要花10726天

% 第二小題程式碼 %
close all
clear
clc
n=0;
sum=0;
p=1000;
d1=1;
while sum<100000000
n=n+5;%每一天增加五元
sum=sum+sum*(5/100/365);%前一天的利息
sum=sum+n;%每天的本金
end
fprintf('每天增加五元存到10,000,000要花%d天\n',n/5)

% 執行結果 %
每天增加五元存到10,000,000要花5529天
>>

這一題是一天增加一個單位存到銀行,我是把它的年利率變成日利率來算,當第一天存的本金,第二天就會得到第一天存的 利息;所以第二天的本金為包括第一天原來的本金及利息,再加上第二天新存入之本金,以此類推
我也不知這觀念是否正確...請同學們多多指導囉

黃世榮 提到...

我應該沒有眼花
如果假設觀念正確
但好像設了P=1000 卻忘記了要使用?
在sum=sum+n後方我就來幫忙補上XD

if rem(sum,p)==0
fprintf('正好達到1000倍數,這是第%d天\n',n)
end

這樣應該對八@@?

如果是下一題

if rem(sum,p)==0
fprintf('正好達到1000倍數,這是第%d天\n',n/5)


我是不知道實際上銀行怎麼計算年息

根據自己的常識來說 是不是要存滿一年
才是使用年息來算阿

要是年息是會每月變動的 那麼這種方法應該要修正

黃世榮 提到...

剛剛下一題忘了打end

ncbee 提到...

那個p=1000是我多打的忘了刪了~不好意思~謝謝同學你有用心的看

而你的想法在整數是沒有問題~但因為有利息在~所以if rem(sum,p)==0應該不會出現,所以會print不出來達到1000元陪數~所以你要另外想一個來試看看.
而且要print出來應該會達到好幾百筆唷~你可以試看看


嗯~利息的算法有正常來說有年利息和月利息這二種算法~用google應該會找到如何算的想法...因為我是根據定存的關念來改成日利息算的~其實正常應該沒在算日利息吧