某幼兒園按如下方法依次給A,B,C,D,E五個小孩發糖果。將全部糖果的一半再加二分之一塊糖果發給第一個小孩;將剩下糖果的三分之一再加三分之一塊糖果發給第二個小孩;將剩下糖果的四分之一再加四分之一塊糖果發給第三個小孩;將剩下糖果的五分之一再加五分之一塊糖果發給第四個小孩;將最後剩下的11塊糖果發給第五個小孩。每個小孩得到的糖果數均為整數。試確定原來共有多少塊糖果?每個小孩各得到多少塊糖果?
要求結果的輸出格式為
sum=糖果總數
xa=A得到的糖果數
xb=B得到的糖果數
xc=C得到的糖果數
xd=D得到的糖果數
xe=E得到的糖果數
以下是我為實現以上要求而寫的,完全能正確實現,請欣賞,假如看了後你有所改進或有別的實現妙方,就請貼出來共同學習與分享吧。讓我們為本網站更具實用,可讀性強而努力!
#include "stdio.h"
main()
{ FILE *fp;
int sum,xa,xb,xc,xd,xe;
if((fp=fopen("58114_2.dat","w"))==NULL) /* 創建結果文件 */
{ printf("cannot open this file.
");
exit(0);
}
sum=0;
while(1)
{ if(60*sum-((sum+1)*30+(sum+1)*10+(sum+1)*5+(sum+1)*3)==660) break; /* 這用了窮舉法,利用了總數減前四人等於第五人的等價關系,等式兩邊同乘了60 */
sum=sum++;
}
xa=(sum+1)/2; /* 以下是求各自所得糖數 */
xb=((sum-xa)+1)/3;
xc=((sum-xa-xb)+1)/4;
xd=((sum-xa-xb-xc)+1)/5;
xe=sum-xa-xb-xc-xd;
fprintf(fp,"sum=%d
xa=%d
xb=%d
xc=%d
xd=%d
xe=%d",sum,xa,xb,xc,xd,xe); /* 結果寫進文件 */
fclose(fp);
}