问题描述:
某幼儿园按如下方法依次给A、B、C、D、E五个小孩发苹果。将全部苹果的一半再加二分之一个苹果发给第1个小孩;将剩下苹果的三分之一再加三分之一个苹果发给第2个小孩;将剩下苹果的四分之一再加四分之一个苹果发给第3个小孩;将剩下苹果的五分之一再加五分之一个苹果发给第4个小孩;将剩下的11个苹果发给第5个小孩。每个小孩得到的苹果数均为整数。求原来共有多少个苹果?每个小孩各得到多少个苹果?
分析:
设当前试探的苹果数为n,则对n推导公式为:
第k个小孩得到全部剩下苹果的(k+1)分之一再加上(k+1)分之一个苹果,即(n+1)/(k+1)个苹果。这个数应该是整数;发完第k个小孩后,余下的苹果数为n-(n+1)/(k+1)应该为11。
代码实现:
#include<stdio.h>
void main(){
int a,b,c,d,e,x,n,k,flag;
n=11; //从11开始试探
flag=1; //flag=1为试探,flag=0为找到解
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);
else