问题描述
某幼儿园按如下方法依次给A,B,C,D,E五个小孩发糖果。将全部糖果的一半再加二分之一块糖果发给第一个小孩;将剩下糖果的三分之一再加三分之一块糖果发给第二个小孩;将剩下糖果的四分之一再加四分之一块糖果发给第三个小孩;将剩下糖果的五分之一再加五分之一块糖果发给第四个小孩;将最后剩下的11块糖果发给第五个小孩。每个小孩得到的糖果数均为整数。试确定原来共有多少块糖果?每个小孩各得到多少块糖果?
分析
源程序
C语言
#include<stdio.h>int main(){int n,flag,x,k,a,b,c,d,e;n = 11;flag = 1;printf("Start");while(flag){x = n;flag = 0;for(k=1;(k<=4)&&(flag==0);k++){if((n+1)%(k+1)==0){n=n-(n+1)/(k+1);printf("n = %d\n",n);}elseflag = 1;}if(flag==0&&n!=11)flag = 1;n = x + 1;}printf("Total number of candy=%d\n",x);a = (x+1)/2;b = (x-a+1)/3;c = (x-a-b+1)/4;d = (x-a-b-c+1)/5;e = 11;printf("A=%d\n",a);printf("B=%d\n",b);printf("C=%d\n",c);printf("D=%d\n",d);printf("E=%d\n",e);printf("END");return 0;}/*StartTotal number of candy=59A=30B=10C=5D=3E=11END*/
#include<stdio.h>int main(){float x1,x2=11;int a[6];char c='a';int i;for(i=5;i>=2;i--) //用于求出最初的糖果数x1{x1=(x2+1.0/i)/(1-1.0/i);x2=x1;}printf("sum=%d\n",(int)x1);//总数for(i=2;i<=5;i++){x2=(x1+1.0)/i;printf("x%c=%d\n",c,(int)x2);x1=x1-x2;c++;//改变角标}printf("xe=11\n");return 0;}/*sum=59xa=30xb=10xc=5xd=3xe=11*/
python
#coding:gbkflag = 1x = 11while flag:flag = 0n = xfor i in range(2,6):#依次对前四个小孩糖果数判断if int((n+1)%i) == 0: #判断分得的数量是否为整数n = n - (n+1)//ielse:flag = 1if (flag == 0 and n != 11):#当前述数字为整数时,进一步判断最后一个小孩的数量是否为11flag = 1x = x + 1print("总数为",x-1)'''总数为 59'''
