猴子偷桃 c语言

猴子偷桃 c语言,第1张

如果你再多点在猴子偷桃上的解释,我才能把这个程序的功能,根据情况告诉你。

我有一个我做的猴子偷桃程序 希望对你有帮助

int monkey(int n,int num)//n为猴子数,num为桃子

{

if(n==0) //如果猴子数为0调用结束

return 0;

if(num%5-1==0)//如果桃子数满足条件 桃子数分为5份

num/=5;

else return 1; //否则 跳出函数

n--; //猴子数-1

monkey(n,num);//若没有跳出函数 则继续调用

}

int main(void)

{

int i=5;

while(1)

{

if(monkey(5,i)==0)

{

printf("%d\n",i);

break;

}

i++;

}

return 0;

}

int

peachcount;

for

(

peachcount

=

0

;

;

peachcount++

)

{

bool

ok

=

true;

int

tmp

=

peachcount;

for

(

int

i

=

0

;

i

<

5

;

i++

)

{

if

(

tmp

%

5

==

1

)

{

tmp

=

(

tmp

-

1

)

/

5;

}

else

{

ok

=

false;

break;

}

}

if

(

ok

)

{

printf(

"一共"

+

peachcount

+

"个桃子。"

);

break;

}

}

//最少781个桃子,最后一只猴子拿走了最后一个桃子,剩下0个桃子,这合理吗?如果不合理就是3906个,就是把算余数的那个循环加一次。结果不唯一,所以ok的时候要break。代码里也许会后语法错误,我c语言不太熟,但是我喜欢程序逻辑。有什么不懂的也可以找我。呵呵。745729276

如果真是吃到了第10天,我想说这TMD还是猴子吗?第一天就会撑死!

C代码在线运行工具

#include <stdioh>

 

int main()

{

    int day = 10;

    int sum = 0;

    int i = 0;

     

    sum = 1;

    for (i = day; i >= 1; i--)    //吃之后算法

    {

        sum = (sum + 1)  2;

    }

    printf("第 %d 天吃之后还剩1个,最初有 %d 个桃子,", day, sum);

    printf("第 1 天吃了 %d 个桃子;\r\n", sum / 2 + 1);

     

    sum = 1;

    for (i = day-1; i >= 1; i--)  //吃之前算法

    {

        sum = (sum + 1)  2;

    }

    printf("第 %d 天吃之前还剩1个,最初有 %d 个桃子,", day, sum);

    printf("第 1 天吃了 %d 个桃子。\r\n", sum / 2 + 1);

     

    return 0;

}

第 10 天吃之后还剩1个,最初有 3070 个桃子,第 1 天吃了 1536 个桃子;

第 10 天吃之前还剩1个,最初有 1534 个桃子,第 1 天吃了 768 个桃子。

#include

<iostreamh>

void

main()

{

int

day,n1,n2;

day=9;

n2=1;

//n2表示剩下的桃子

while(day>0)

{

n1=(n2+1)2;

n2=n1;

day--;

}

printf(“%d\n”,n2);

}

第二种方法

#include

<stdioh>

void

main()

{

int

day,sum=1;

for(day=1;day<=9;day++)

//剩一个桃子是从第九天剩下的,所以要算九次

sum=(sum+1)2;

printf("%d\n",sum);

}

第三种:

#include<stdioh>

main()

{

int

day=9,n=1;

while(day-->0)

n=(++n)2;

/第1天的桃子数是第2天桃子数加1后的2倍/

printf("%d",n);

}

第四中方法:

#include

"stdioh"

main()

{

int

day,m,n;

for(n=2;;n++)

{

m=n;

for(day=1;day<10;day++)

m=m/2-1;

/m为吃剩下的桃/

if(m==1)

/第十天,剩下一个/

break;

}

printf("第一天摘下的桃子数:%d\n",n);

/n为符合条件的/

}

约瑟夫环问题:

length个人围成一圈,分别编号1到length,从1开始报数报到seg的出去,继续报,问最后剩下的是原来的几号?

#include "stdioh"

#define MAX 20

/length个人围成一圈,报到seg退出,返回最后留下人的序号(>=1)/

int JohnsonRing(int length, int seg){

int arr[MAX];

int i, k, n;

/设置每一个人的出局标志:0在列,1退出/

for(i=0; i<length; i++){

arr[i] = 0;

}

i = 0;

k = 1;

n = length;

while(n > 1) {

if(arr[i] == 1){ /当前位置的人已退出,移到下一位置 /

i = (i + 1) % length;

continue;

}

if(k == seg){ /当前位置的人退出/

arr[i] = 1;

n--;

printf("%d\n", i+1);

i = (i + 1) % length;

k = 1;

}

else{ /继续报数/

k++;

i = (i + 1) % length;

}

}

for(i=0; i<length && arr[i]==1; i++);

return i+1;

}

void main()

{

int remain;

printf("sequence :\n");

remain = JohnsonRing(10, 7);

printf("remain : %d\n", remain);

}

public class Monkey

{

public static void main(String[] args)

{

int sum=0,remain=1;

//每天吃剩的桃子加一个正好是前一天桃子的一半,每天桃子的总数就是前一天剩下桃子的数量

for(int day=9;day>=1;day--)

{

sum=(remain+1)2;

remain=sum;

Systemoutprintln("第"+day+"天还剩"+remain+"个桃子");

}

Systemoutprintln(sum);

}

}

以上就是关于猴子偷桃 c语言全部的内容,包括:猴子偷桃 c语言、用C语言编一程序 猴子分桃的问题、请用C语言编写一个程序,“猴子吃桃”问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9875033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存