问题描述

某幼儿园按如下方法依次给A,B,C,D,E五个小孩发糖果。将全部糖果的一半再加二分之一块糖果发给第一个小孩;将剩下糖果的三分之一再加三分之一块糖果发给第二个小孩;将剩下糖果的四分之一再加四分之一块糖果发给第三个小孩;将剩下糖果的五分之一再加五分之一块糖果发给第四个小孩;将最后剩下的11块糖果发给第五个小孩。每个小孩得到的糖果数均为整数。试确定原来共有多少块糖果?每个小孩各得到多少块糖果?

分析

源程序

C语言

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int n,flag,x,k,a,b,c,d,e;
  5. n = 11;
  6. flag = 1;
  7. printf("Start");
  8. while(flag)
  9. {
  10. x = n;
  11. flag = 0;
  12. for(k=1;(k<=4)&&(flag==0);k++)
  13. {
  14. if((n+1)%(k+1)==0)
  15. {
  16. n=n-(n+1)/(k+1);
  17. printf("n = %d\n",n);
  18. }
  19. else
  20. flag = 1;
  21. }
  22. if(flag==0&&n!=11)
  23. flag = 1;
  24. n = x + 1;
  25. }
  26. printf("Total number of candy=%d\n",x);
  27. a = (x+1)/2;
  28. b = (x-a+1)/3;
  29. c = (x-a-b+1)/4;
  30. d = (x-a-b-c+1)/5;
  31. e = 11;
  32. printf("A=%d\n",a);
  33. printf("B=%d\n",b);
  34. printf("C=%d\n",c);
  35. printf("D=%d\n",d);
  36. printf("E=%d\n",e);
  37. printf("END");
  38. return 0;
  39. }
  40. /*
  41. Start
  42. Total number of candy=59
  43. A=30
  44. B=10
  45. C=5
  46. D=3
  47. E=11
  48. END
  49. */
  1. #include<stdio.h>
  2. int main()
  3. {
  4. float x1,x2=11;
  5. int a[6];
  6. char c='a';
  7. int i;
  8. for(i=5;i>=2;i--) //用于求出最初的糖果数x1
  9. {
  10. x1=(x2+1.0/i)/(1-1.0/i);
  11. x2=x1;
  12. }
  13. printf("sum=%d\n",(int)x1);//总数
  14. for(i=2;i<=5;i++)
  15. {
  16. x2=(x1+1.0)/i;
  17. printf("x%c=%d\n",c,(int)x2);
  18. x1=x1-x2;
  19. c++;//改变角标
  20. }
  21. printf("xe=11\n");
  22. return 0;
  23. }
  24. /*
  25. sum=59
  26. xa=30
  27. xb=10
  28. xc=5
  29. xd=3
  30. xe=11
  31. */

python

  1. #coding:gbk
  2. flag = 1
  3. x = 11
  4. while flag:
  5. flag = 0
  6. n = x
  7. for i in range(2,6):#依次对前四个小孩糖果数判断
  8. if int((n+1)%i) == 0: #判断分得的数量是否为整数
  9. n = n - (n+1)//i
  10. else:
  11. flag = 1
  12. if (flag == 0 and n != 11):#当前述数字为整数时,进一步判断最后一个小孩的数量是否为11
  13. flag = 1
  14. x = x + 1
  15. print("总数为",x-1)
  16. '''
  17. 总数为 59
  18. '''