您現在的位置是:首頁 > 人文

百元買百雞的經典問題解決

由 指令碼之家 發表于 人文2022-11-28
簡介#define _CRT_SECURE_NO_WARNINGS#include#include#includeint main(int argc, char *argv[]){for (size_t i = 0

求百錢買百雞用什麼方法

題目:中國古代數學家張丘建在他的《算經》中提出了一個著名的“百錢百雞問題”:一隻公雞值五錢,一隻母雞值三錢,三隻小雞值一錢,現在要用百錢買百雞,請問公雞、母雞、小雞各多少隻?

百元買百雞的經典問題解決

方法一:使用三層迴圈解決。最內層迴圈每次增三,比自增一效率了三分之二。

#define _CRT_SECURE_NO_WARNINGS

#include

#include

#include

int main(int argc, char *argv[])

{

/*中國古代數學家張丘建在他的《算經》中提出了一個著名的“百錢百雞問題”:

一隻公雞值五錢,一隻母雞值三錢,三隻小雞值一錢,現在要用百錢買百雞,

請問公雞、母雞、小雞各多少隻?*/

for (size_t i = 0; i < 100/5; i++)

{

for (size_t j = 0; j < 100/3; j++)

{

for (size_t k = 0; k < 100; k+=3)

{

if (i + j + k == 100 && i*5 + j*3 + k/3 == 100)

{

printf(“公雞:%d母雞:%d小雞:%d\n”, i, j, k);

}

}

}

}

system(“pause”);

return 0;

}

方法二:使用雙層迴圈解決。注意要加chicken % 3 == 0的條件,防止整數除法向下取整的情況。

#define _CRT_SECURE_NO_WARNINGS

#include

#include

#include

int main(int argc, char *argv[])

{

for (size_t i = 0; i < 100 / 5; i++)

{

for (size_t j = 0; j < 100 / 3; j++)

{

int chicken = 100 - i - j;

if (i + j + chicken == 100 && i * 5 + j * 3 + chicken / 3 == 100 \

&& chicken % 3 == 0)

{

printf(“公雞:%d母雞:%d小雞:%d\n”, i, j, chicken);

}

}

}

system(“pause”);

return 0;

}

推薦文章