2010年2月7日 星期日

Problem 11000 Bee,蜜蜂的數量

Problem 11000 此題是說一隻母蜂一年會生下一隻公蜂,而公蜂則會生下一隻公蜂和一隻母蜂,然後死掉。問你 n 年後會有幾隻蜜蜂,而其中這些蜜蜂,又有幾隻是公蜂。

此題只要算它前幾個結果,並找出其中的關係,其實不難。公蜂的數量從 0 年算起數量的變化為:0 -> 1 -> 2 -> 4 -> 7 -> ...;而母蜂的數量從 0 年算起數量的變化為:1 -> 1 -> 2 -> 3 -> 5 -> ...。可以發現,當年的公蜂數量是去年公蜂和母蜂加總,而母蜂的數量是去年和前年的母蜂加總,有了這個關係,就很好寫了。

以下是主程式區塊程式碼:
long n, i;
scanf("%ld", &n);
if (n < 0) break;
long female[2], recode, male = 0,total = 0;
female[0] = 0, female[1] = 1;
if(n == 0)
{
printf("0 1\n");
continue;
}
else
for(i=1 ; i<=n ; i++)
{
male = female[1] + male;
recode = female[1] ,female[1] += female[0], female[0] = recode;
total = male + female[1];
}
printf("%ld %ld\n", male, total);

By David.K

p11000題目連結
回ACM題庫目錄
回首頁

沒有留言: