經典數學故事:陌生人提議每天給富翁 10 萬元(題目說 10 萬但程式用 30 萬),富翁第一天給 0.01 元,之後每天加倍,持續 30 天。程式計算並對比雙方給付金額,展示指數成長遠超線性成長。
富翁每天給 300,000 元(程式設定),共 30 天。陌生人第一天給 0.01 元,之後每天翻倍。計算 30 天內雙方累計給付金額並逐日列印對比。
money:陌生人當天需給付金額,初始 0.01,每日 *=2。late_money:陌生人累計給付總額。sum_money:富翁累計給付總額,每日固定 +300,000。/* 程式標頭註解 */
#include <stdio.h>
void star(void);
int main()
{
int i;
float money, late_money = 0.0, sum_money = 0.0;
star();
money = 0.01;
for(i = 1; i <= 30; i++)
{
sum_money += 300000.0;
late_money += money;
money *= 2;
printf("第%2d天後,富翁給的錢為:%10.2f\t", i, late_money);
printf("陌生人得給的錢為:%11.2f\n", sum_money);
}
printf("\n富翁看到結果後,會反悔吧!\n");
printf("\n哈哈,謝謝您的合作!\n\tGOOD BYE!\n");
star();
return 0;
}
void star(void)
{
int i;
for(i = 0; i < 60; i++) printf("*");
printf("\n");
}

陌生人第 n 天給付:0.01 * 2^(n-1) 元。
30 天累計:0.01 * (2^30 - 1) ≈ 10,737,418.23 元。
富翁 30 天累計:300,000 * 30 = 9,000,000 元。
第 26 天左右陌生人單日給付即超過富翁每日給付,最終陌生人總給付遠超富翁。
float 精度問題,大數建議改用 double 或 long double。