水手和椰子

题目描绘

		5各水手在岛上发现一堆椰子,先由第一个水手把椰子分为5堆,还剩下1个给了猴子,自己藏起1堆.然后,第2个水手把剩下的4堆混合后重新分为等量的5堆,还剩下一个给了猴子,自己藏起1堆。以后第3、4各水手依次按此方法处理。最后第五个水手把剩下的椰子分为等量的5堆后,同样剩下1个给了猴子。请用迭代法编程计算并输出原来这堆椰子至少有多少个。

参考答案

若某水手对面的椰子数是y个,则他前面一个水手面对的椰子数是 y *5/4 + 1个,依次类推。若对某一个整数y经上述5次迭代都是整数,最后的结果即为所求。让x从1开始取值,y从5x+1开始取值,在按   y *5/4 + 1进行的四次迭代中。若某一次y不是整数,则返回x增1再试,直到5次迭代的y值全部为整数时,打印输出y值即为所求。一般的,对于n(n > 1)个水手	,按 y * n(n-1) + 1进行n次迭代可得n个水手分椰子问题的解。

参考代码

#include <stdio.h>

int Cocount(int n){
    int i = 1;
    float x=1, y;
    y = n * x + 1;
    do{
        y = y*n/(n-1) + 1;
        i++;
        if(y != (int)y){
            x += 1;
            y = n*x+1;
            i = 1;
        }
    }
    while(i <n );
    return (int)y;
}

int main(){
    printf("y = %d\n",Cocount(5));
    return 0;
}

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值