出售金鱼

一、问题描述

小明将养的一缸金鱼分5次出售:第1次卖出全部的一半加1/2条;第2次卖出余下的三分之一加1/3条;第3次卖出余下的四分之一加1/4条;第4次卖出余下的五分之一加1/5条;最后卖出余下的11条。试编程求出原来鱼缸中共有多少条鱼。
二、问题分析
依题意可知,金鱼是分5次出售的,每次卖出的方式都相同,因此可以用表达式将每次卖鱼后剩下的条数计算出来。
由:
第1次卖出全部的一半加1/2条;
第2次卖出余下的三分之一加1/3条;
第3次卖出余下的四分之一加1/4条;
第4次卖出余下的五分之一加1/5条;
可推出:
第j次卖出余下的(j+1)分之一加1/(j+1)条。
假设第j次卖鱼前金鱼总数为x,则第j次卖鱼后鱼缸中还剩下金鱼的条数为:
x- ( x+1 ) / ( j+1)
又由于“最后卖出余下的11条”,因此第4次卖鱼后鱼缸中剩下的金鱼条数为11条。因为金鱼只能整条进行出售,因此x+1必然能够整除j+1。
可以从23开始试探x的取值,由于x值必为奇数,因此步长取2。

三、程序流程图

 

四、代码实现

#include<stdio.h>
int main()
{
int i,j,x,flag=0;
for(i=23;flag==0;i+=2)
{
    for(j=1,x=i;j<=4&&x>=11;j++)
if((x+1)%(j+1)==0)
x-=(x+1)/(j+1);
else
{
x=0;
break;
}
if(j==5&&x==11)
{
printf("原来鱼缸中共有%d条金鱼。\n",i);
flag=1;
}
}
}

 

posted @ 2023-04-26 14:52  jais  阅读(85)  评论(0编辑  收藏  举报