經典算法詳解(6)漁夫捕魚

A、B、C、D、E5個漁夫夜間合夥捕魚,各自在河邊的樹叢中休息。待日上三竿,漁夫A第一個醒來,他將魚分做5份,把多餘的一條扔回河中,拿本身的一份回家了。漁夫B第二個醒來,也將魚分做5份,扔掉多餘的一條,拿走本身的一份,接着後三個也按一樣的辦法分魚,問5個漁夫至少合夥捕了多少條魚。ios

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 
 6  int isInteger(float i) {        //用於判斷是不是整數
 7     if (i - (int)i == 0) {
 8         return 1;
 9     }
10     else {
11         return 0;
12     }
13 }
14 
15 //從後面往前面推,初始化count表示E醒來看到的條數,故四次循環以後是A看到的條數,
16 int fish_count() {
17     float count;
18     for (int n = 1; n < 10000; n++) {
19         count = 5 * n + 1;
20         int flag = 1;
21         for (int i = 0; i < 4; i++) {
22             count = count * 5 / 4 + 1.0;
23             if (!isInteger(count)) {            
24                 flag = 0;
25                 break;
26             }
27         }
28         if (flag) {
29             return (int)count;
30         }
31     }
32     return -1;
33 }
34 
35 int main(int argc, char *argv[]) {
36     cout << fish_count();
37     getchar();
38     return 0;
39 }
相關文章
相關標籤/搜索